C语言期末考试试卷附参考答案word版本

一、 单项选择题(请将答案填在下面表格中20×1) 1. 以下叙述中正确的是( )。 A. C语言比其他语言高级 B. C语言可以不用编译就能被计算机识别执行 C. C语言以接近英语国家的自然语言和数学语言作为语言的表达形式 D. C语言出现的最晚,具有其他语言的一切优点 2. 以下叙述中正确的是( )。 A.构成C程序的基本单位是函数 B.可在一个函数中定义另一个函数 C. main函数必须放在其他函数之前 D.所有被调用的函数一定要在调用之前进行定义 3. 以下叙述中正确的是( )。 A. C语言程序总是从第一个函数开始执行 B.在C语言程序中,要调用函数必须在main()函数中定义 C. C语言程序总是从main()函数开始执行 D. C语言程序中的main()函数必须放在程序的开始部分 4. 以下有关for循环的正确描述是( )。 A. for循环只能用于循环次数已经确定的情况 B. for循环是先执行循环体语句,后判断表达式 C.在for循环中,不能用break语句跳出循环体 D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 5. 对下面程序段的描述,正确的是( )。 x=-1; do {x=x*x;}while(!x); A.是死循环 B. 循环执行一次 C. 循环执行两次 D. 有语法错误 6. 以下有关C语言数组说法正确的是( )。 A.数组元素的数据类型可以不一致 B.数组元素的个数可以不确定,允许随机变动 C.可以使用动态内存分配技术,定义元素个数可变的数组 D.定义一个数组后,就确定了它所容纳的具有相同数据类型元素的个数 7.以下数组定义正确的是( )。 A. int a(20); B. int a[ ]={1,2,5,7,0}; C. int a[n]; D. int a[2]={1,2,4,6}; 8.在定义int b[2][10];之后,对b数组元素引用正确的是( )。 A. b[0][9] B. b[2,3] C. b(1)(5) D. b[10] [0] 9. 如有定义语句int c[ ]={1,5,3,4,6,7,0};,则数组c有( )个元素。 A.0 B.不定 C. 6 D. 7 10.以下叙述中不正确的是( )。 A.字符数组中可以存放字符串 B.可以对字符型数组进行整体输入、输出 C.可以对整型数组进行整体输入、输出 D.不能通过“=”对字符型数组进行整体赋值 11.已知char d[ ]={”543210”};,则数组d的长度是( )。 A.5 B.6 C. 7 D. 8 12.已知char s3[ ]=”China”;,则下列程序段的输出结果是( )。 printf(“%d”,sizeof(s3)); A.5 B. 6 C. 7 D.8 13.已知char s1[10],s2[ ]={”China”};则在程序中能将字符串” China”赋给数组s1的是( )。

A.s1={“China”}; B.strcpy(s1,s2); C. s1=s2; D. strcpy(s2,s1); 14.将字符串中大写字母换成小写字母的函数是( )。 A.strlwr B. strupr C.string D.strlen 15.下列( )排序方法中,执行一轮比较后,只交换一次数据。 A. 起泡法 B. 顺序比较法 C. 选择法 D. 插入法 16.在C语言程序中,

有关函数的定义正确的是( )。 A.函数定义不可以嵌套,但函数调用可以嵌套 B.函数定义可以嵌套,但函数调用不可以嵌套 C.函数定义和函数调用均不可以嵌套 D.函数定义和函数调用均可以嵌套 17.以下错误的说法是( )。 A.实参可以是常量、变量或表达式 B.形参可以是常量、变量或表达式 C.实参可以为任何类型 D.形参应与其对应的实参类型一致 18.以下错误的描述是:函数调用可以( )。 A.出现在执行语句中 B.出现在一个表达式中 C.作为一个函数调用的实参 D.作为一个函数的形参 19. 函数调用时,若形参和实参都是变量名,则正确的说法是( )。 A. 形参不分配内存 B. 形参分配内存 C. 形参和实参占用相同的内存 D. 实参不分配内存 20.以下函数值的类型是( )。 fun(float x) { float y; y=3*x-4;return y;} A. int B. float C. void D. 不确定 二、判断题(正确的打√,错误的打×,10×1) 1.一个循环体内又包含另一个完整的循环结构称为循环的嵌套。 ( ) 2.break语句能提前终止循环。 ( ) 3.二维数组可被看作一种特殊的一维数组:它的元素又是一个一维数组。 ( ) 4. 对9个元素使用冒泡法排序时,需要排9轮,第一轮需要比较9次。 ( ) 5. strcat(字符数组1, 字符数组2)的作用是将字符数组2接到字符数组1后面。 ( ) 6. strcmp(“Beijing”,”Korea”)的函数值是一个正整数。 ( ) 7.C语言中,数组元素的下标是从1开始的,下标不能越界。 ( ) 8.函数的形参在函数未调用时预分配了存储空间。 ( ) 9.如函数值的类型和return语句中表达式的值不一致,则以函数类型为准。 ( ) 10.调用函数时,实参是数组元素,则实现的是“值传递”。 ( ) 三、填空题(10×2) 1.定义二维数组的一般形式为: ,引用一维数组元素的形式为: 。 2.有一序列:21,-5,8,11,9,0,34,4,-17,6从小到大排序,用冒泡法经过二轮排序后,序列中10个数的顺序为: ,若使用顺序比较法,经过三轮排序后,这10个数的顺序为: 。 3.调用字符串处理函数时,应在程序的开头添加预编译命令:#include< >,puts( )

函数将一个以 结束的字符序列(字符串)输出到终端 4.C语言中,函数分为系统提供的 和用户自定义函数两类,也可分为有参函数和 两类。 5.函数的递归调用指在调用一个函数的过程中又 。 6.函数值只能通过 语句返回主调函数。 四、程序改错(求出两个非零正整数的最大公约数,并作为函数值返回。在错误下面划横线,在右边写出正确内容,5×2) 五、阅读程序写出

运行结果 (4×5) 六、程序填空题(结果按序号填在下方对应横线上,10×2分) # include int fun(int a, b ) { int r,t; if(a # include int main( ) { int i,j,n=0; for(i=―5;i<=5;i++) { if(i%2!=0) n++; for(j=1;j<=abs(i);j++) printf(“ “); for(j=1;j<=11-abs(i)*2;j++) printf(“%c“,64+n); printf("\n"); } } 运行结果为: void main( ) { int n1,n2,a; printf(“please input n1,n2:\n”); scanf(“%d%d”, &n1,&n2); a=fun(n1,n2); printf("最大公约数是:%d\n",a); } 1. # include int main( ) { void fun(int x); fun(8); printf("\n"); } void fun(int x) {if(x/2>0) fun(x/2); printf("%d",x); } 运行结果为: 2. # include void main ( ) { char s1[ ]=”This book”; char s2[ ]=”THIS hook”; int i; for (i=0;s1[i]!=’0’&&s2[i]!=’0’;i++) if(s1[i]!=s2[i]) printf(“%c”,s1[i]); } 运行结果为: 4. #include int main( ) {int i,j,x; int a[10] ={12,3,14,5,26,97,38,9,0,―2}; for(i=0;i<=9;i++) {x=a[i];j=i-1; while(j>=0&&x
①______________________________ ⑥______________________________ ②______________________________ ⑦______________________________ ③______________________________ ⑧______________________________ ④______________________________ ⑨______________________________ ⑤______________________________ ⑩______________________________ 附:参考答案 一、单项选择题 题 号 1 2 3 4 5 6 7 8 9 10 答 案 C A C D B D B A D C 题 号 11 12 13 14 15 16 17 18 19 20 答 案 B B B A C A B D B A 二、 判断题 题 号 1 2 3 4 5 6 7 8 9 10 答 案 √ √ √ × √ × × × √ √ 三、 填空题 1.类型说明 数组名[常量表达式][常量表达式] 数组名[下标] 2. -5,8,9,0,11,4,-17,6,21,34 -17,-5,0,21,11,9,34,8,4,6 3. string.h \0 1、编程实现将十进制整数n转换成十六进制数输出。 #include<__①___ > int main() { int n,a[20],i=0,m=0; char hex[16] ={'0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F'}; printf("请输入整数n:\n "); scanf(___②____, &n); while(n>0) { a[i++]=n%16; n= ____③___; } printf("转化为十六进制的数为:"); for(i=i―1; ____④___;i――) //倒序输出 { m=a[i]; printf("__⑤___",hex[m]); } printf("\n"); } 2、编写判断是否为素数的函数,在主函数中输入一整数,输出是否为素数。 #include int psushu(___⑥____) {int i; for(i=2; ___⑦___;i++) if(m%i==0) return 0; return ___⑧___;} void main() { int a, s; printf("请输入整数:\n "); scanf(“%d”, __⑨__); s=

psushu(a); if (__⑩__) printf(“%d是素数n”,a); else printf("%d不是素数\n",a); }

4. 库函数 无参函数 5.直接或间接地调用该函数本身 6. return 四、程序改错 五、阅读程序写出运行结果 1.1248 2.hisb 3. 4. -2 0 3 5 9 12 14 26 38 97 六、程序填空题 ①__stdio.h_____________________ ⑥____int m_____________________ ②__”%d”______________________ ⑦___i=0_______________________ ⑨__&a______________________ ⑤___%c_______________________ ⑩___s 或 s==1________________ # include int fun(int a, b ) { int r,t; if(a

相关文档
最新文档