1、C 语言程序设计 试题及答案(五) 学号: 学习中心名称: 专业: 层次: 姓名: 题号 一 二 三 四 五 六 七 八 九 十 总分 得分 注意:所有答案都要写在答题卡上 一、单项选择题(20 分,每题 2 分) 1程序段 C int *p,a; p= a=10; printf(“%d“,p); 的输出应为: A)10 B)0 C)不能确定 D)语法错误 2C 语言规定,简单变量作为实参时,他和对应形参之间的数据传递方式是:A A)单向值传递 B) 地址传递 C) 相互传递 D) 由用户指定方式 3以下语句或语句组中,能正确进行字符串赋值的是。D A)char *sp;*sp=“right!
2、“; B)char s10;s=“right!“; C) char s10;*s=“right!“; D)char *sp=“right!“; 4for(i=0;i=0;i-) t*=i; printf(“%dn“,t); 5在循环语句中,break 语句的作用是 跳出循环体 ,continue 语句的作用是 跳过循环体中剩余的语句而强行执行下次循环 。 6下面程序段将字符数组 b 连接到数组 a 的后面。 main() char a20= .“I am “; char b= .“a student.“; int i, j; i = strlen(a); for(j =_0_; bj!=0;
3、j+) a_i+j _ = b_j _; a_i+j _ = _0_ ; 7for(表达式 1;表达式 2;表达式 3) 语句组 的执行顺序是先求解表达式 1、再_判断表达式 2_、如果成立则执行_语句组_、然后_求解表达式 3_。 三、写出程序的运行结果(30 分,每题 10 分) 1写出程序运行后的输出结果。 int f(int b4) int i,j,s=0; for(j=0;j2) i=3-j; s+=bij; return s; main( ) int a44=1,2,3,4,0,2,4,5,3,6,9,12,3,2,1,0; printf(“%dn“,f(a); 答: 1. 16
4、2. 0.500000 2写出程序运行后的输出结果 #include main() float x=2,y; if(x0) y=0; else if(x10) y=1/x; else y=1; printf(“%fn”,y); 答、0.500000 3(1)函数 sub()的功能是什么?(2)写出程序运行的输出结果。 long sub(int num) int i; long subsum=1; for(i=1;i=num;i+) subsum*=i; return(subsum); main() int i; long sum=0; for(i=1;i=4;i+) sum+=sub(i);
5、printf(“sum=%ldn“,i,sum) ; (1) 函数 sub( )的功能是根据当前实参 i 的值控制其 for 循环的次数,进一步控制运算:subsum*=i 的次数。 实参 i 取值 返回值 subsum的值 1 1 2 1*2=2 3 2*3=6 4 6*4=24 (2) 运行结果: sum0=1 sum1=3 sum2=9 sum3=33 四、编程(完形填空)(20 分,每题 10 分) 1写一个函数,实现将一个长度80 的字符串按逆序存放。解题要求:该函数的唯一形参是字符串的起始地址。 void convert(char string) int length,mid,i;
6、 char temp; length=_ strlen _(string); mid=_ length/2_; for(_i=1_;imid;i+) temp=_ stringi_; stringi=string_(length-1)-i _; string(length-1)-i=temp; 2以下程序计算某年某月有几天,1、3、5、7、8、10、12 月有 31 天,4、6 、9 、11 月有 30 天,2 月为 28 天、闰年 2 月为 29 天。 main() int yy,mm,day; scanf(“%d%d”, switch(_mm _) case1: case3: case5: case7: case8: case10: case12: day=_31_; break; case4: case6: case9: case11: day=_30_; break; case2: if(yy%4=0)_ else day=28; break;