C语言程序设计课程期末复习练习小抄参考_第1页
C语言程序设计课程期末复习练习小抄参考_第2页
C语言程序设计课程期末复习练习小抄参考_第3页
C语言程序设计课程期末复习练习小抄参考_第4页
C语言程序设计课程期末复习练习小抄参考_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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. while 5. 在下面的do-while

2、循环语句中,其循环体语句被执行的次数为( )。 int i=0; do i+; while(i<10); 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数组的首地址大( )个字节。 a. 4 b. 8 c

3、. 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. exe c. obj

4、 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; i<n; i+=2) s;”中循环体s语句被执行的次数为( )。 a. (n+1)/2 b. n/2+1 c. n/2-1 d. n-1 15. 在下列的字符数组定义中,存在语法错误的是( )。 a. char a20="abcdefg" b.

5、 char a="x+y=55." c. char a15='1','2' d. char a10='5' 16. 若有一个函数原型为“double *function()”,则它的返回值类型为( )。 a. 实数型 b. 实数指针型 c. 函数指针型 d. 数组型 17. 在c语言中,所有预处理命令都是以( )符号开头的。 a. * b. # c. & d. 18. 假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p+后,p所指数据单元的值为( )。 a. 40 b. 30 c. 70 d

6、. 10 19. 若要使p指向二维整型数组a1020,则p的类型为( )。 a. int * b. int * c. int *20 d. int(*)20 20. 表示文件结束符的符号常量为( ) a. eof b. eof c. eof d. feof 21. 程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用( )符号作为分隔符。 a. 空格或逗号 b. 逗号或回车 c. 逗号或分号 d. 空格或回车 22. 逻辑表达式(x>0 && x<=10)的相反表达式为( )。a. x<=0 | x>10 b. x<=0 &&

7、; x>10c. x<=0 | x<=10 d. x>0 && x>10 23. 当处理特定问题时的循环次数已知时,通常采用( )循环来解决。 a. for b. while c. do-while d. switch 24. 假定i的初值为0,则在循环语句“while(i<n) s+=i*i; i+;”中循环体被执行的总次数为( )。 a. n-1 b. n c. n+1 d. n/2 25. 假定一个二维数组的定义语句为“int a34=3,4,2,8,6;”,则元素a12的值为( )。 a. 2 b. 4 c. 6 d. 8 26. 在

8、下列选项中,不正确的函数原型格式为( )。 a. int function(int a); b.void function (char); c. int function(a); d.void int(double* a); 27. 假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大( )个字节。 a. 1 b. 2 c. 4 d. 8 28. 假定有定义为“int m=7, *p;”,则给p赋值的正确表达式为( )。 a. p=m b. p=&m c. *p=&m d. p=*m 29. 假定指针变量p定义为“int *p=malloc(siz

9、eof(int);”,要释放p所指向的动态存储空间,应调用的函数为( )。 a. free(p) b. delete(p) c. free(*p) d. free(&p) 30. c语言中的系统函数fopen()是( )一个数据文件的函数。 a. 读取 b. 写入 c. 关闭 d. 打开参考解答: 1. a 2. b 3. b 4. b 5. d 6. c 7. a 8. c 9. a 10. b 11. b 12. c 13. c 14. a 15. d 16. b 17. b 18. a 19. d 20. c 21. d 22. a 23. a 24. b 25. c 26. c

10、 27. c 28. b 29. a 30. d 二、填空题 1c语言中的每条简单语句以_作为结束符。 2. c程序中的所有预处理命令均以_字符开头。 3. 当不需要函数返回任何值时,则应使用_标识符来定义函数类型。 4十进制数25表示成符合c语言规则的十六进制数为_。 5. 假定不允许使用逻辑非操作符,则逻辑表达式a>b | b=5的相反表达式为_。 6. 执行“typedef int datatype;”语句后,在使用int定义整型变量的地方也可以使用_来定义整型变量。 7. 假定一维数组的定义为“char* a8;”,则该数组所占存储空间的字节数为_。 8. 假定二维数组的定义为“

11、double amn;”,则该数组的列下标的取值范围在_之间。 9. 存储一个空字符串需要占用_个字节。 10. strcpy函数用于把一个字符串_到另一个字符数组空间中。 11. 程序的编译单位是一个_。 12. 假定a是一个一维数组,则ai的指针访问方式为_。 13. 执行int *p=malloc(sizeof(int)操作得到的一个动态分配的整型对象为_。 14执行“printf("%c",'a'+2);”语句后得到的输出结果为_。 15short int类型的长度为_。 16. 用类型关键字表示十进制常数3.26f的类型为_。 17. 假定y=10

12、,则表达式+y*3的值为_。 18. 逻辑表达式(x=0 && y>5)的相反表达式为_。 19若x=5,y=10,则x!=y的逻辑值为_。 20. 假定二维数组的定义为“int a35;”,则该数组所占存储空间的字节数为_。 21. 使用“typedef char bb1050;”语句定义_为含有10行50列的二维字符数组类型。 22. 字符串"a:xxk数据"的长度为_。 23假定p所指对象的值为25,p+1所指对象的值为46,则*+p的值为_。 24. 假定一个数据对象为int*类型,则指向该对象的指针类型为_。 25假定一个结构类型的定义为 “

13、struct aint a,b; a* c;”,则该类型的长度为_。 26. 假定要访问一个结构对象x中的数据成员a,则表示方式为_。 27. 用于输出表达式值的标准输出函数的函数名是_。 28每个c语言程序文件在编译时可能出现有致命性错误,其对应的标识符为_。 29. 已知'a''z'的ascii码为6590,当执行“int x='c'+3;”语句后x的值为_。 30. 表达式(int)14.6的值为_。 31. 假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为_。 32. 假定x=5,则执行“a=(x?10:20);”语

14、句后a的值为_。 33. 假定一维数组的定义为“char* am;”,则该数组所占存储空间的字节数为_。 34. 存储字符串"a"需要至少占用存储器的_个字节。 35. strlen()函数用于计算一个字符串的_。 36. 在c语言中,一个函数由函数头和_这两个部分组成。 37假定p所指对象的值为25,p+1所指对象的值为46,则执行表达式*(p+)后,p所指对象的值为_。 38. 假定p是一个指向整数对象的指针,则用_表示指针变量p的地址。 39. 与结构成员访问表达式p->name等价的访问表达式为_。参考解答:1. ;(或分号) 2. # 3. void 4.

15、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. 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. 函

16、数体 37. 46 38. &p39. (*p).name 三、写出下列每个程序运行后的输出结果 1. #include<stdio.h> void main() int x=5; switch(2*x-1) case 4: printf("%d ",x); break; case 7: printf("%d ",2*x); break; case 10: printf("%d ",3*x); break; default: printf("%s ","default");

17、printf("%sn","switch end."); 2. #include<stdio.h> void main() int f1,f2,i; f1=1; printf("%d ",f1); for(i=2;i<=5;i+) f2=3*f1+1; printf("%d ",f2); f1=f2; printf("n"); 3. #include<stdio.h> void main() int a10=12,39,26,41,55,63,72,40,83,95

18、; int i, i1=0, i2=0; for(i=0;i<10;i+) if(ai%2=1) i1+; else i2+; printf("%d %dn",i1,i2); 4. #include<stdio.h> #include<string.h> void main( ) char s15="567891234" int i, n=strlen(s) ; for(i=0; i<n/2; i+) char c=si; si=sn-1-i; sn-1-i=c; printf("%sn",s);

19、5. #include<stdio.h> int lb(int *a, int n) int i,s=1; for(i=0;i<n;i+) s*=*a+; return s; void main() int a=1,2,3,4,2,4,5,2; int b=lb(a,4)+lb(a+3,3); printf("b=%dn",b); 6. #include<stdio.h> void main() int i,s=0; for(i=1;i<6;i+) s+=i*i; printf(“s=%dn”,s); 7. #include<std

20、io.h> #define n 6 void main() int i,an=2,5,8,10,15,21; for(i=0; i<n; i+) if(ai%5) printf("%d ",ai); printf("n"); 8. #include<stdio.h> #include<string.h> void main() int i; unsigned int len; char* a5="student","worker","cadre","

21、soldier","zzeasan123" len=strlen(a0); for(i=1; i<5; i+) if(strlen(ai)>len) len=strlen(ai); printf("%dn",len); 9. #include<stdio.h> void main() int a,b; for(a=2,b=3; b<20;) printf("%d %d ",a,b); a=a+b; b=a+b; printf("%d %dn",a,b); 10. #inclu

22、de<stdio.h> void le(int* a, int* b) int x=*a; *a=*b; *b=x; void main() int x=15, y=26; printf("%d %dn",x,y); le(&x,&y); printf("%d %dn",x,y); 11. #include<stdio.h> void main() int i, s=0; for(i=1;i+) if(s>30) break; if(i%2=0) s+=i; printf("s=%dn",

23、s); 12. #include<stdio.h> void main() int a9=36,25,48,24,55,40,18,66,20; int i, b1, b2; b1=b2=a0; for(i=1; i<9; i+) if(ai>b1) b1=ai; if(ai<b2) b2=ai; printf("%d %dn",b1,b2); 13. #include<stdio.h> void sb(char ch) switch(ch) case 'a': case 'a': printf(&q

24、uot;ww "); break; case 'b': case 'b': printf("gg "); break; default: printf("bb "); break; void main() char a1='a',a2='b',a3='f' sb(a1);sb(a2);sb(a3); printf("n"); 14. #include<stdio.h> #define m 6 void main() int i,x;

25、int am=10,15,22,37,46,58; for(i=0; i<m/2; i+) x=ai; ai=am-1-i; am-1-i=x; for(i=0; i<6; i+) printf("%d ",ai); printf("n"); 15. #include<stdio.h> struct worker char name15; int age; float pay; ; void main() struct worker x="wanghua",52,2350; struct worker y, *

26、p; y=x; p=&x; printf("%d %7.2fn", y.age+p->age, p->pay+20); 16. #include<stdio.h> void main() int i,j,k=0; for(i=0; i<5; i+) for(j=i; j<5; j+) k+; printf("%dn",k); 17. #include<stdio.h> void main() int x=60; int i=2, p=1; while(1) if(x%i=0) p*=i; x/=i;

27、 if(i<x) i+; else break; printf("%dn",p); 18. #include<stdio.h> void main() int a8=76,63,54,62,40,75,90,58; int i; for(i=0; i<8; i+) if(ai>70) printf("%d ",ai); printf("n"); 19. #include<stdio.h> void wf(int x, int y) x=x+y; y+=x; printf("%d %d

28、n",x,y); void main() int x=3, y=8; wf(x,y); 20. #include<stdio.h> int la(int *a, int n) int i,s=0; for(i=0;i<n;i+) s+=ai; return s; void main() int a5=3,4,6,10,20; int b=la(a,5); int c=la(a+2,3); printf("%d %dn",b,c); 参考解答: 1. default switch end. 2. 1 4 13 40 121 3. 6 4 4. 43

29、2198765 5. b=56 6. s=55 7. 2 8 21 8. 10 9. 2 3 5 8 13 21 10. 15 26 26 15 11. s=42 12. 66 18 13. ww gg bb 14. 58 46 37 22 15 10 15. 104 2370.00 16. 15 17. 30 18. 76 75 90 19. 11 19 20. 43 36 四、写出下列每个函数的功能 1. #include<math.h> int sg(int x) /x为大于等于2的整数 int a=(int)sqrt(x); /sqrt(x)取x的平方根 int i=2;

30、while(i<=a) if(x%i=0) break; i+; if(i<=a)return 0; else return 1; 2. int findmax(struct intnode *f) /f为一个单链表的表头指针 int x; if(!f) printf("单链表为空n"),exit(1); x=f->data; f=f->next; while(f) if(f->data>x) x=f->data; f=f->next; return x; 假定struct intnode的类型定义为: struct intn

31、ode int data; struct intnode* next; 3. #include<stdio.h> int sa(int a, int b) if(a>b) return 1; else if(a=b) return 0; else return -1; 4. void output(struct intnode *f) /f为单链表的表头指针 if(!f) return; while(f) printf("%d ",f->data); f=f->next; printf("n"); 假定struct intn

32、ode的类型定义为: struct intnode int data; struct intnode* next; 5. int sc(int a, int b, int c) if(a>=b && a>=c) return a; if(b>=a && b>=c) return b; return c; 6. int* li(int n) int* a=malloc(n*sizeof(int); int i; for(i=0;i<n;i+) scanf("%d",a+i); return a; 7. int wc

33、(int a, int n, int k) int i, c=0; for(i=0;i<n;i+) if(ai>=k) c+; return c; 8. void qa(struct worker a, int n) int i; for(i=0; i<n; i+) scanf("%s %d %f", , &ai.age, &ai.pay); 假定结构类型struct worker 的定义如下: struct worker char name15; int age; float pay;参考解答: 1. 判断x是否为一个素数,

34、若是则返回1,否则返回0。 2. 求出由f所指向的单链表中所有结点的最大值。 3. 比较两个整数a和b的大小,若a>b则返回1,若a=b则返回0,若a<b则返回-1。 4. 遍历并输出由f所指向的单链表中每个结点的值。 5. 求出a,b,c三个数中的最大值并返回。 6. 首先建立一个动态整型数组an,接着从键盘上输入n个整数到an中,最后返回数组an的首地址。 7. 统计并返回一维整型数组an中大于等于k的值的个数。 8. 从键盘上为具有struct worker类型的数组an输入n个记录。 五、按题目要求编写程序或函数 1. 编写一个程序,输出50以内(含50)的、能够被3或者5

35、整除的所有整数。 2. 编写一个递归函数“int ff(int a, int n)”,求出数组a中所有n个元素之积并返回。 3. 编写一个程序,利用while循环,计算并打印输出的值,其中正整数n值由键盘输入。假定求和变量用sum表示,计数变量用i表示,sum、i和n均定义为全局变量,sum和i的初值分别被赋予0和1。 4. 根据函数原型“void dd(int a, int n, int mm)”编写函数定义,利用双重循环查找并打印输出数组an中任何两个元素的值等于mm值的元素值。假定ai+aj等于mm,则输出格式为:(ai,aj)。 5. 编写一个程序,计算1+3+32+.+310的值并输

36、出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。 6. 根据函数原型“int ff(int a, int n)”,编写函数定义,计算并返回数组an中所有元素之和。 7. 根据函数原型“double mean(double amn,int m,int n)”,编写函数定义,要求返回二维数组amn中所有元素的平均值。假定在计算过程中采用变量v存放累加值和最后的平均值。 8. 根据函数原型“int mm(int a,int m)”,编写函数定义,计算并返回数组am中元素最大值和最小值之差。 参考解答: 1. #include<stdio.h> void main() i

37、nt i; for(i=3; i<=50; i+) if(i%3=0 | i%5=0) printf("%d ",i); printf("n"); 2. 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. #include<stdio.h> int n,i=1; double sum=0; void main() scanf("%d"

38、;,&n); while(i<=n) sum+=(double)1/i+; printf("sum=%lfn",sum); 4. void dd(int a, int n, int mm) int i,j; for(i=0; i<n; i+) for(j=i+1; j<n; j+) if(ai+aj=mm) printf("%d, %dn", ai,aj); 5. #include<stdio.h> void main() int i; int p=1; int s=1; for(i=1;i<=10;i+) p

39、*=3; s+=p; printf("%dn",s); 6. int ff(int a, int n) int i,sum=0; for(i=0; i<n; i+) sum+=ai; return sum; 7. double mean(double amn,int m,int n) int i,j; double v=0.0; for(i=0; i<m; i+) for(j=0; j<n; j+) v+=aij; v/=m*n; return v; 注:函数体的最后两行可以合并为一条返回语句:return v/=m*n 8. int mm(int a,i

40、nt m) int i,x1,x2; x1=x2=a0; for(i=1; i<m; i+) if(ai>x1) x1=ai; if(ai<x2) x2=ai; return x1-x2; "if we don't do that it will go on and go on. we have to stop it; we need the courage to do it."his comments came hours after fifa vice-president jeffrey webb - also in london for th

41、e fa's celebrations - said he wanted to meet ivory coast international toure to discuss his complaint.cska general director roman babaev says the matter has been "exaggerated" by the ivorian and the british media.blatter, 77, said: "it has been decided by the fifa congress that it

42、 is a nonsense for racism to be dealt with with fines. you can always find money from somebody to pay them."it is a nonsense to have matches played without spectators because it is against the spirit of football and against the visiting team. it is all nonsense."we can do something better

43、to fight racism and discrimination."this is one of the villains we have today in our game. but it is only with harsh sanctions that racism and discrimination can be washed out of football."the (lack of) air up there watch mcayman islands-based webb, the head of fifa's anti-racism taskforce, is in london for the football association's 150th anniversary celebrations and will attend city's premier league match at chelsea on sunday."i am going to be at the match tomorrow and i have asked to meet yaya tou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论