《c语言程序设计a综合练习(一)》由会员分享,可在线阅读,更多相关《c语言程序设计a综合练习(一)(5页珍藏版)》请在金锄头文库上搜索。
1、期末综合练习(一) 一、单选题(每小题2分,共20分) 1. C语言源程序文件的缺省扩展名为( )。 A. cpp B. exe C. obj D. c 2设x和y均为逻辑值,则x & y为真的条件是( )。 A. 它们均为真 B. 其中一个为真 C. 它们均为假 D. 其中一个为假 3. 在下列的符号常量定义中,正确的定义格式为( )。 A. #define M1 B. const int M2 20 C. #define M3 10 D. const char mark 4. for循环语句能够被改写为( )语句。 A. 复合 B. if C. switch D. while 5. 在下面
2、的一维数组定义中,错误的定义格式为( )。 A. int a=1,2,3; B. int a10=0; C. int a; D. int a5; 6在下面的函数原型声明中,存在语法错误的是( )。 A. AA(int a, int b); B. AA(int, int); C. AA(int a; int b;); D. AA(int a, int); 7. 假定a为一个数组名,则下面存在错误的表达式为的( )。 A. ai B. *a+ C. *a D. *(a+1) 8. 假定有定义为“int a10, x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为( )。
3、A. x=pa3 B. x=*(a+3) C. x=a3 D. x=*pa+3 9字符串y=%dn的长度为_。 A. 5 B. 6 C. 4 D. 3 10. 向一个二进制文件中写入信息的函数为( )。 A. fgets() B. fputs() C. fread() D. fwrite() 二、填空题(每小题2分,共26分) 1一个函数定义由_和函数体两部分组成。 2. 执行“printf(%c,F-2);”语句后得到的输出结果为_。 3int数据类型的长度为_。 4. 表达式25/4的值为_。 5若x=5,y=10,则执行“if(x=y) c=3; else c=8;”语句后,c的值为_。
4、 6. 保留字case和default出现在(if/switch/for/while)_语句中。 7. 在函数调用中执行到(return/break/continue/if)_语句时,将结束所在函数的执行过程,返回到调用该函数的原来位置。 8. 假定二维数组的定义为“char aMN;”,则该数组共包含有_个字符元素。 9. 存储字符a需要占用存储器的_个字节空间。 10. 若一个字符串的长度为n,则存储它的字符数组的长度至少为_。 11. 假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式(*p)+后,p所指对象的值为_。 12. 假定p是一个指向整数对象的指针,则用_表示该整
5、数对象。 13假定一个结构类型的定义为“struct Bint a5; char* b;”,则该类型的理论长度为_。 三、写出下列每个程序运行后的输出结果(每小题6分,共30分) 1. #include void main() int n=4, y=0; while(n-) y+=3; printf(y=%dn,y); 输出结果: 2. #include void main() int i,s=0; for(i=1;i8;i+) if(i%2=0 | i%3=0) s+=i; printf(s=%dn,s); 输出结果: 3. #include void main() char a=acdbf
6、kmd; int i1=0, i2=0, i=0; while(ai) if(aid) i1+; else i2+; i+; printf(%d %dn,i1,i2); 输出结果: 4. #include void main() int a8=4,8,12,16,20,24,28,32; int *p=a, s=0; do s+=*p; p+=3; while(pa+8); printf(s=%dn,s); 输出结果: 5. #include struct Worker char name15; int age; double pay; void main() struct Worker a4
7、=abc,20,2400,defa,50,3600, ghin,40,1800,jklt,36,2200; int i; double s=0; for(i=0; i=i) if(x%i=0) printf(%d ,i); x/=i; i+; 2. 假定结点的结构类型为IntNode,它的数值域为data,链接指针域为next,请指出下面函数的功能。 void QC(struct IntNode* f) /f为一个单链表的表头指针 while(f) printf(%d ,f-data); f=f-next; 函数功能: 五、按题目要求编写程序或函数(每小题6分,共12分) 1. 编写一个主函数
8、,利用while循环计算1+2+4+210的值,最后输出计算结果。假定计数变量用i表示,每次累乘2的变量用p表示,每次累加一个数据项值的变量用sum表示。 2. 根据函数原型“int DD(int a, int n, int MM)”编写函数定义,利用双重for循环统计出数组an中任何两个不同元素的值等于MM值的配对个数,然后返回统计结果。如假定ai+aj等于MM,同时ij,则为一个配对。参考答案一、单选题(每小题2分,共20分) 1. D 2. A 3. C 4. D 5. C 6. C 7. B 8. D 9. A 10. D 二、填空题(每小题2分,共26分) 1. 函数头 2. D 3
9、. 4 4. 6 5. 3 6. switch 7. return 8. M*N 9. 1 10. n+1 11. 26 12. *p 13. 24三、写出下列每个程序运行后的输出结果(每小题6分,共30分)评分标准:根据答案正确程度酌情给分。 1. y=12 2. s=15 3. 3 5 4. s=48 5. s=10000.00四、根据下列每个函数回答相应问题(每小题6分,共12分)评分标准:根据答题的正确与完整程度酌情给分。 1. 2 3 5 2. 遍历输出由表头指针f所指向的单链表中每个结点的data域的值。 五、按题目要求编写程序或函数(每小题6分,共12分)评分标准:根据编写程序或函数的正确与完整程度酌情给分。 1. void main() int i=1, p=1, sum=1; /1分 while(i=10) p*=2; sum+=p; i+; /4分 printf(sum=%dn,sum); /6分 2. int DD(int a, int n, int MM) int i,j,c=0; /1分 for(i=0; in; i+) /2分 for(j=i+1; jn; j+) /3分 if(ai+a