C语言程序设计_综合作业.docx
C语言程序设计_综合作业基本信息:矩阵文本题 *姓名:_学号:_1. C语言源程序名的后缀是( )。 单选题 *.exe.obj.c(正确答案).cp2. 以下叙述正确的是( )。 单选题 *C语言程序总是从main函数开始执行(正确答案)C语言程序总是从最前面的函数开始执行C语言程序所调用的函数必须放在main函数的前面C语言程序中main函数必须放在程序的开始位置3. 表达式3.6-5/2+1.2+5%2的值是( )。 单选题 *4.83.33.8(正确答案)4.34. 若有定义语句:int x=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为( )。 单选题 *2.41(正确答案)21.95. 以下选项中,能用作用户标识符的是( )。 单选题 *void_0_(正确答案)8_8unsigned6. 有以下程序#include<stdio.h>main() int a=1, b=0; printf("%d,", b=a+b); printf("%dn", a=2*b);程序运行后的输出结果是( )。 单选题 *0,03,21,2(正确答案)1,07. 若有以下程序#include <stdio. h>main() char c1,c2; c1='C'+'8'-'3' c2='9'-'0' printf("%c %dn", c1, c2);则程序的输出结果是( )。 单选题 *H 9(正确答案)表达式不合法输出无定值F '9'H '9'8. 若有定义: float x=1.5; int a=1,b=3,c=2;则正确的switch语句是( )。 单选题 *switch(a+b) case 1: printf("*n"); case c: printf("*n"); switch(x) case 1.0: printf("*n' ); case 2.0: printf(" *n"); switch(int)x); case 1: printf("*n"); case 2: printf("*n"); switch(a+b) case 1: printf("*n"); case 2+1: printf("*n"); (正确答案)9. 以下程序段中的变量已正确定义for(i=0;i<4;i+,i+)for(k=1;k<3;k+); printf("*” );该程序段的输出结果是( )。 单选题 *(正确答案)*10. 有以下程序#include<stdio.h>main() int i; for(i=1;i<=40;i+) if(i+%5=0) if(+i%8=0) printf("%d",i); printf("n");执行后的输出结果是( )。 单选题 *32(正确答案)5402411. 若有以下程序#include<stdio.h>int f(int m) static int n=0; int a=2; n+; a+; return n+m+a;main() int k; for(k=0;k<4;k+) print("%d",f(k);程序运行的输出结果是( )。 单选题 *3,5,7,9,4,7,10,134,6,8,10(正确答案)4,5,6,7,12. 若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确( )。 单选题 *函数的形参和实参分别占用不同的存储单元(正确答案)同名的实参和形参占同一个存储单元形参只是形式上的存在,不占用具体存储单元函数的实参和其对应的形参共占同一存储单元13. 有以下程序#include <stdio. h>.int m1(int x,int y) return x<=y?x:y; int m2(int x,int y) return x<=y?y:x; int fun(int a, int b) return a+b; main() int x=2,y=3,z=1; printf("%dn", fun(ml(x, y),m2(y, z);程序的运行结果是( )。 单选题 *345(正确答案)614. 以下关于return语句叙述中正确的是( )。 单选题 *一个自定义函数中必须有一条return语句一个自定义函数中可以根据不同情况设置多条return语句(正确答案)定义void类型的函数中可以有带返回值的return语句没有return语句的自定义函数在执行结束时不能返回到调用处15. 有以下程序#include<stdio.h>void f(int x) if(x>=10) printf("%d-",x%10); f(x/10); else printf("%d", x);main() int z=123456; f(z);程序运行后的输出结果是( )。 单选题 *1-2-3-4-5-66-5-4-3-2-1(正确答案)1-2-3-4-5-6-6-5-4-3-2-1-16. 设有数组定义:char array="China" 则数组array所占的空间为( )。 单选题 *4个字节5个字节6个字节(正确答案)7个字节答案解析:字符数组是每个元素存放一个字符型数据的数组。C语言中约定用'0'作为字符串的结束标志,它占内存空间,但不计入字符串的长度。对数组array赋初值char array="China",此时系统自动在末尾加入一个'0',此时数组array的长度为6,所占用的空间为6个字节,即char array="China"等价于char array='C','h','i','n','a','0'。17. 有如下程序 void main() int i,sum; for(i=1;i<=3;sum+) sum+= i; printf(" %dn",sum); 该程序的执行结果是( )。 单选题 *63死循环(正确答案)0答案解析:在循环过程中,i的值一直没有被改变,所以这是一个死循环。18. 以下叙述正确的是( )。 单选题 *do-while语句构成的循环不能用其它语句构成的循环来代替。do-while语句构成的循环只能用break语句退出。do-while语句构成的循环,在while后的表达式为非零时结束循环。do-while语句构成的循环,在while后的表达式为零时结束循环。(正确答案)答案解析:do-while语句构成的循环体可由其他语句构成的循环体代替,所以第一个选项不正确。do-while语句构成的循环,当使用break语句或者条件表达式的值为0时,可结束循环,所以第二和第三个选项不正确。19. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。void main() int i,j; for(i=0;待填空1;i+) j=i*10+6; if(待填空2) continue; printf("%d",j); 单选题 *待填空1应为i<10;待填空2应为j%3!=0(正确答案)待填空1应为i<=10;待填空2应为j%3!=0待填空1应为i<10;待填空2应为j%3=0待填空1应为i<=10;待填空2应为j%3=0答案解析:该程序的功能是:输出100以内能被3整除且个位数为6的所有整数。在具体程序中,定义变量i存储十位数,所以i<10;定义变量j存储十位数为i、个位数为6的整数,if语句用于判断该整数是否能被3整除,不能被整除的话就跳过该次循环,执行下一次循环,所以if语句后面的判断表达式为j%3!=0或j%3。20. 设a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c>d)后n的值为( )。 单选题 *012(正确答案)7答案解析:&&运算符的结合方向是从左到右,所以先计算左边括号中的m=a>b表达式,其中ab等价于5>6不成立,故表达式ab的值为0,即为0赋给m,因此&&左边表达式的值为0,0与任何值&&运算都为0,于是不再计算&&右边表达式的值(短路),所以此时的n仍然为2。21. 以下关于运算符优先顺序的描述中正确的是( )。 单选题 *关系运算符 < 算术运算符 < 赋值运算符 < 逻辑运算符逻辑运算符 < 关系运算符 < 算术运算符 < 赋值运算符赋值运算符 < 逻辑运算符 < 关系运算符 < 算术运算符(正确答案)算术运算符 < 关系运算符 < 赋值运算符 < 逻辑运算符答案解析:参见教材P320页的附录B运算符的优先级和结合性22. 能正确表示逻辑关系:"a10或a0"的C语言表达式是( )。 单选题 *a>=10 or a<=0a>=0 | a<=10a>=10 && a<=0a>=10 a<=0(正确答案)答案解析:""表示或的意思,"|"是按位或的意思,"&&"是并且的意思,C语言中没有"or"。23. 函数的实参传递到形参只有按值传递一种方式。 单选题 *正确错误(正确答案)答案解析:函数的实参传递到形参有值传递和地址传递两种方式。24. 在if语句的三种形式中,如果要想在满足条件时执行一组(多个)语句,则必须把这一组语句用括起来组成一个复合语句。 单选题 *正确(正确答案)错误25. continue不是结束本次循环,而是终止整个循环的执行。 单选题 *正确错误(正确答案)答案解析:continue是结束本次循环,直接进入到下次循环中,break用于循环语句中的作用是直接跳出本层循环。26. 函数strlen("ASDFGn")的值是7。 单选题 *正确错误(正确答案)答案解析:strlen求的是字符串的长度,也就是从起始到0的字符个数,不包括'0'。并且,'n'是C语言字符表达的转义字符形式,代表换行。也就是说,'n'是一个字符,而不是''和'n'两个字符。27. do-while语句先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。 单选题 *正确(正确答案)错误28. 数组说明 int a3=1,2,3,4,5; 是正确的。 单选题 *正确错误(正确答案)答案解析:定义二维数组时,省略之后要让计算机能够确定定义的几行几列才可以,假如省略行数,但确定了列数,计算机会根据列数以及初始化时的数据,自动确定行数,因此行数可以省略。但是如果给了行数但没有确定列数,对于初始化的数据,计算机不知道怎么划分,会出现错误。29. C语言允许用字符串的方式对数组作初始化赋值。 单选题 *正确(正确答案)错误30. 设有:int x=11;,则表达式 (x+ * 1/3) 的值是4。 单选题 *正确错误(正确答案)答案解析:当自加运算符做后缀表达式的时候,表达式的值不变,只有变量的值增加1,所以表达式(x+*1/3)相当于(11*1/3),值为3。