1、资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。C语言程序设计课程期末复习练习 一、 单选题 1在每个C语言程序中都必须包含有这样一个函数, 该函数的函数名为( )。 A. main B. MAIN C. name D. function 2每个C语言程序文件的编译错误分为( ) 类。 A. 1 B. 2 C. 3 D. 4 3. 字符串a+b=12n的长度为( ) 。 A. 6 B. 7 C. 8 D. 9 4. 在switch语句的每个case块中, 假定都是以break语句结束的, 则此switch语句容易被改写为( ) 语句。 A. for B. if C. do D.
2、while 5. 在下面的do-while循环语句中, 其循环体语句被执行的次数为( ) 。 int i=0; do i+; while(i10); A. 4 B. 3 C. 5 D. 10 6. 将两个字符串连接起来组成一个字符串时, 选用的函数为( ) 。 A. strlen() B. strcap() C. strcat() D. strcmp() 7. 若用数组名作为函数调用的实参, 传递给形参的是( ) 。 A. 数组的首地址 B. 数组中第一个元素的值 C. 数组中全部元素的值 D. 数组元素的个数 8. 假定a为一个整数类型的数组名, 整数类型的长度为4, 则元素a4的地址比a数
3、组的首地址大( )个字节。 A. 4 B. 8 C. 16 D. 32 9. 假定s被定义为指针类型char *的变量, 初始指向的字符串为Hello world!, 若要使变量p指向s所指向的字符串, 则p应定义为( ) 。 A. char *p=s; B. char *p=&s; C. char *p;p=*s; D. char *p; p=&s; 10. 从一个数据文件中读入以换行符结束的一行字符串的函数为( ) 。 A. gets() B. fgets() C. getc() D. fgetc() 11. 由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。 A. cpp B.
4、exe C. obj D. c 12. 设有两条语句为”int a=12; a+=a*a;”, 则执行结束后, a的值为( )。 A. 12 B. 144 C. 156 D. 288 13. 带有随机函数调用的表示式rand()%20的值在( )区间内。 A. 119 B. 120 C. 019 D. 020 14. for循环语句”for(i=0; i0 & x=10)的相反表示式为( ) 。A. x10 B. x10C. x=0 | x0 & x10 23. 当处理特定问题时的循环次数已知时, 一般采用( ) 循环来解决。 A. for B. while C. do-while D. sw
5、itch 24. 假定i的初值为0, 则在循环语句”while(ib | b=5的相反表示式为a5)的相反表示式为_(x! =0 | y=5) 或: (x | y5的相反表示式为_ x+yname等价的访问表示式为_(*p).name _。参考解答: 1. ;( 或分号) 2. # 3. void 4. 0x195. a=b & b!=5 6. DataType 7. 32 8. 0N-19. 1 10. 拷贝( 复制) 11. 程序文件 12. *(a+i)13. *p 14. C 15. 2 16. float17. 33 18. (x! =0 | y=5) 或: (x | y=5) 19
6、. 1 20. 60 21. BB 22. 1123. 46 24. int* 25. 12 26. x.a27. printf 28. error 29. 70 30. 1431. x+y=5 32. 10 33. 4*M 34. 235. 长度 360. 函数体 37. 46 38. &p39. (*p).name五、 按题目要求编写程序或函数 1. 编写一个程序, 输出50以内( 含50) 的、 能够被3或者5整除的所有整数。#include void main() int i; for(i=3; i=50; i+) if(i%3=0 | i%5=0) printf(%d ,i); pr
7、intf(n); 2. 编写一个递归函数”int FF(int a, int n)”, 求出数组a中所有n个元素之积并返回。int FF(int a, int n) if(n=0) printf(n值非法n),exit(1); if(n=1) return an-1; else return an-1*FF(a,n-1); 3. 编写一个程序, 利用while循环, 计算并打印输出的值, 其中正整数n值由键盘输入。假定求和变量用sum表示, 计数变量用i表示, sum、 i和n均定义为全局变量, sum和i的初值分别被赋予0和1。#include int n,i=1; double sum=0
8、; void main() scanf(%d,&n); while(i=n) sum+=(double)1/i+; printf(sum=%lfn,sum); 4. 根据函数原型”void DD(int a, int n, int MM)”编写函数定义, 利用双重循环查找并打印输出数组an中任何两个元素的值等于MM值的元素值。假定ai+aj等于MM, 则输出格式为: (ai,aj)。void DD(int a, int n, int MM) int i,j; for(i=0; in; i+) for(j=i+1; jn; j+) if(ai+aj=MM) printf(%d, %dn, ai,
9、aj); 5. 编写一个程序, 计算1+3+32+.+310的值并输出, 假定分别用i,p,s作为循环变量、 累乘变量和累加变量的标识符。#include void main() int i; int p=1; int s=1; for(i=1;i=10;i+) p*=3; s+=p; printf(%dn,s); 6. 根据函数原型”int FF(int a, int n)”, 编写函数定义, 计算并返回数组an中所有元素之和。int FF(int a, int n) int i,sum=0; for(i=0; in; i+) sum+=ai; return sum; 7. 根据函数原型”d
10、ouble Mean(double aMN,int m,int n)”, 编写函数定义, 要求返回二维数组amn中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。double Mean(double aMN,int m,int n) int i,j; double v=0.0; for(i=0; im; i+) for(j=0; jn; j+) v+=aij; v/=m*n; return v; 注: 函数体的最后两行能够合并为一条返回语句: return v/=m*n 8. 根据函数原型”int MM(int a,int m)”, 编写函数定义, 计算并返回数组am中元素最大值和最小值之差。int MM(int a,int m) int i,x1,x2; x1=x2=a0; for(i=1; ix1) x1=ai; if(aix2) x2=ai; return x1-x2;