10. 使用语句scanf(″a=%f, b=%f″, &a, &b);输入变量a、b的值(□代表空格),正确的是
( )
A. 1.25,2.4 B. 1.25□2.4 C. a=1.25, b=2.4 D. a=1.25□b=2.4 11. 下列说法中错误的是( ) ..A. C语言中循环嵌套的层数没有限定 B. C语言中的内部函数只能在本文件中被调用 C. 用typedef语句定义的数据类型名称必须是大写字母 D. C语言中的continue语句,可以通过改变程序的结构而省略 12. 设char s[10], *p=s;, 下列语句中错误的是( ) ..A. p=s+5; C. s[2]=p[4];
B. s=P+s; D. *p=s[0];
13. 设enum week {sun, mon, tue, wed, thu, fri, sat}day;,正确的赋值语句是( ) A. sun=0; B. sun=day; C. mon=sun+1;
D. day=sun;
14. 若用数组名作为函数调用时的实参,则实际上传递给形参的是( ) A. 数组的第一个元素值 B. 数组元素的个数 C. 数组中全部元素的值 D. 数组首地址 15. 下列错误的是( ) ..
A. char s[]=″China″; B. char s[10]={″China″}; C. char s[10]; s=″China″;
D. char s[10]={′C′, ′h′, ′i′,;′n′, ′a′};
16. 在C语言中,有值函数的数据类型是指( )
A. 函数形式参数的数据类型 B. 函数返回值的数据类型 C. 调用该函数时的实参的数据类型 D. 任意指定的数据类型 17. 设 struct { short a; char b; float c; }cs;
则sizeof(cs)的值是( )
A. 4 B. 5 C. 6 D. 7 18. 设
int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=x, k;
且0≤k<10, 则对数组元素x[k]的错误引用是( ) ..
第 21 页
A. p+k B. *(x+k) C. x[p-x+k] D. *(&x[k]) 19. 设 #define N 3
#define Y(n) ((N+1)*n)
则表达式2*(N+Y(5+1))的值是( ) A. 42 B. 48 C. 54 D. 出错
20. 关于主函数的形式参数,下列说法正确的是( ) A. 可以有两个 B. 类型可以是实型
C. 不可以由用户自己定义名字 D. 是在程序编译时获得实际值
二、填空题(本大题共10小题,每小题2分,共20分)
21. 可以将被调函数中获得的值返回给主调函数的语句是__________。 22. 设int x=2, y=1;则表达式x+++y的值是__________。
23. 若未指定局部变量的存储类型,则其隐含的存储类型是__________。
24. 在执行循环结构或switch结构时,能够立即退出该结构的语句是__________。 25. 设int a=-3, b=7, c=-1;则执行(a==0)&&(a=a%b
int a[2][3]={1, 2, 3, 4, 5, 6};
则数组元素a[1][0]的值是__________。
30. 函数调用时,若形参是一个变量,而对应的实参是一个有确定值的表达式,则函数参数的传递方式是__________传递。
三、程序分析题(本大题共5小题,每小题5分,共25分) 阅读下列程序,将输出结果写到各题右侧的空白处。 31. mian( ) { int i;
for(i=1;i<3;i++)f(i); } f(int j)
{ static int a=100; int k=1;
第 22 页
++k;
printf(″%d\\n″, j+a+k); a-=2; }
32. #include
} s[]={″LiHua″, 18, ″WangXin″, 25, ″LiuGuo″, 21}; #define N (sizeof(s)/sizeof (s[0])) void f (struct porb a[], int n); main( ) { f (s, N); }
void f (struct porb a[], int n) { int i;
for (i=0;i printf (″%s:%d\\n″, a[i]. name, a[i]. age); } 34. void LE(int*a, int b) { int x=*a; 第 23 页 printf(″%d\\t%d\\n″, *a, b); *a=b;b=x; } main( ) { int x=10, y=25; LE(&x, y); printf(″%d\\t%d\\n″, x, y); } 35. /*设从键盘输入:420<回车> */ #include while ((c=getchar( ) )!=′\\n′) switch(c-′0′) { case 0: case 1:putchar(c+2); case 2:putchar(c+3);break; case 3:putchar(c+4); default:putchar(c+1);break; } printf(″\\n″); } 四、程序填充题(本大题共3小题,每小题6分,共18分) 给出下列程序,将横线处缺少的部分补上,使其能正确运行。 36. 一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“水仙花数”(如:153=13+53+33), 找出所有的这种数。 main( ) { int n, a, b, c;/*n、a、b和c分别为三位数自身及其个位、十位和百位 */ for(c=1;c<=9;c++) for (b=0; b<=9;b++) for(______;a++) /*第一空*/ { n=_________; /*第二空*/ if(a*a*a+b*b*b+c*c*c==_________) /*第三空*/ 第 24 页 printf(″%d\\n″, n); } } 37. 输入一个数字(范围在0~9之间,若不在此范围内显示输入错),输出对应的英文单词(Zero, One, Two, ??,Nine)。 main( ) { int i; char *digit[10]={″Zero″, ″One″, ″Two″, ″Three″, ″Four″, ″Five″, ″Six″, ″Seven″, ″Eight″, ″Nine″}; scanf(″%d″, _________); /*第一空 */ printf(″%d→″, i); if(____________) /*第二空 */ printf(″%s\\n″, digit[_________]); /*第三空 */ else printf(″Input error! \\n″); } 38. 将一个文本文件(ma. dat)拷贝到另一个文本文件(niu. dat)中。 #include FILE *ma, *niu; ma=fopen(″ma. dat″, ______); /*第一空 */ miu=fopen(″niu. dat″, ″w″); while(! feof(ma)) fputc(fgetc(ma), ________); /*第二空 */ fclose(niu);__________; /*第三空 */ } 五、程序设计题(本大题共3小题,第39小题5分,第40、41小题各6分,共17分) 39. 输入某学生的数学(math)、英语(english)和C语言(C)的成绩,输出该学生这三门课的成绩、总成绩(sum)和平均成绩(aver)。 40. 按下列要求分别写出两个函数(不用写主函数) (1)计算n! 计算公式:n!=1×2×3×??×n 函数首部为log fac(int n) (2)调用上述函数计算Ckmcmk 计算公式: Ckm?m! k!(m?k)!第 25 页