2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > c 语言程序设计复习 C语言程序设计复习题

c 语言程序设计复习 C语言程序设计复习题

时间:2021-10-08 05:49:19

相关推荐

c 语言程序设计复习 C语言程序设计复习题

Transcription

1 C 语言程序设计 ( 本 ) 复习题 一 选择题 1. 以下语句或语句组中, 能正确进行字符串赋值的是 A)char *sp;*sp="right!"; C)char s[10];*s="right!"; 2. 以下选项中合法的字符常量是 B)char s[10];s="right!"; D)char *sp="right!" A) "B" B) '\010' C) 68 D) D 3. 结构化程序由三种基本结构组成, 三种基本结构组成的算法 A) 可以完成任何复杂的任务 B) 只能完成部分复杂的任务 C) 只能完成符合结构化的任务 D) 只能完成一些简单的任务 4. 以下选项中可作为 C 语言合法整数的是 A)10110B B)0386 C)0Xffa D)x2a2 5. 以下不能定义为用户标识符的是 A)scanf B)Void C)_3com_ D)int 6. 在 C 语言中, 合法的长整型常数是 A) OL B) C) & D) 216D 7. 以下有 4 组用户标识符, 其中合法的一组是 A) For B) 4d C) f2_g3 D) WORD -sub DO IF void Case Size abc define 8. 下列函数定义中, 会出现编译错误的是 A)max(int x,int y,int *z) B)int max(int x,y) { *z=x>y? x:y; { int z; z=x>y? x:y; return z; C)max(int x,int y) D)int max(int x,int y) { int z; { return(x>y?x:y); z=x>y?x:y; return(z); 9. 假定 x 和 y 为 double 型, 则表达式 x=2,y=x+3/2 的值是 A) B) 3 C) D) 以下合法的赋值语句是 A) x=y=100 B) d--; C) x+y; D) c=int(a+b); 11. 设正 x y 均为整型变量, 且 x=10 y=3, 则以下语句的输出结果是 printf("%d,%d\n",x--,--y); A) 10,3 B) 9.3 C) 9.2 D) x y z 被定义为 int 型变量, 若从键盘给 x y z 输入数据, 正确的输入语句是 A) INPUT x y z; B) scanf("%d%d%d",&x,&y,&z); C) scanf("%d%d%d",x,y,z); D) read("%d%d%d",&x,&y,&z); 13. 以下定义语句中正确的是 A) char a='a'b='b'; B) float a=b=10.0; C) int a=10,*b=&a; D) float *a,b=&a; 14. 下列选项中, 不能用作标识符的是

2 A) _1234_ B)_1_2 C)int_2_ D)2_int_ 15. 有以下定义语句 double a,b; int w; long c; 若各变量已正确赋值, 则下列选项中正确的表达式是 A) a=a+b=b++ B)w%(int)a+b) C)(c+w)%(int)a D)w=a==b; 16. 有以下程序 { int m=3,n=4,x; x=-m++; x=x+8/++n; printf("%d\n",x); A) 3 B) 5 C) -1 D) 有以下程序 { char a='a',b; print("%c,",++a); printf("%c\n",b=a++); A) b,b B) b,c C) a,b D) a,c 18. 有以下程序 { int m=0256,n=256; printf("%o %o\n",mn,n); A) B) C) D) 有以下程序 { int a=666,b=888; printf("%d\n",a,b); A) 错误信息 B) 666 C) 888 D) 666, 有以下程序 { int i; for(i=0;i<3;i++) switch(i) { case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i);

3 A) B) C) D) 若 x 和 y 代表整型数, 以下表达式中不能正确表示数学关系 x-y <10 的是 A) abs(x-y)<10 B) x-y>-10&& x-y<10 D) (x-y)*(x-y)< 有以下程序 { int a=3,b=4,c=5,d=2; if(a>b) if(b>c) printf("%d",d++ +1); else printf("%d",++d +1); printf("%d\n",d); A) 2 B) 3 C) 43 D) 下列条件语句中, 功能与其他语句不同的是 A) if(a) printf("%d\n",x); else printf("%d\n",y); B) if(a==0) printf("%d\n",y); else printf("%d\n",x); C) if (a!=0) printf("%d\n",x); else printf("%d\n",y); D) if(a==0) printf("%d\n",x); else printf("%d\n",y); 24. 有以下程序 { int i=0,x=0; for (;;) { if(i==3 i==5) continue; if (i==6) break; i++; s+=i; ; printf("%d\n",s); A)10 B) 13 C) 21 D) 程序进入死循环 25. 若变量已正确定义, 要求程序段完成求 5! 的计算, 不能完成此操作的程序段是 A) for(i=1,p=1;i<=5;i++) p*=i; B) for(i=1;i<=5;i++){ p=1; p*=i; C) i=1;p=1;while(i<=5){p*=i; i++; D) i=1;p=1;do{p*=i; i++; while(i<=5);

4 26. 有以下程序 { char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d); printf("c,%c,%c,%c\n",a,b,c,d); 若运行时从键盘上输入 :6,5,65,66< 回车 > 则输出结果是 A) 6,5,A,B B) 6,5,65,66 C) 6,5,6,5 D) 6,5,6,6 27. 以下能正确定义二维数组的是 A) int a[][3]; B) int a[][3]=2{2*3; C) int a[][3]={; D) int a[2][3]={{1,{2,{3,4; 28. 有以下程序 int f(int a) { return a%2; { int s[8]={1,3,5,2,4,6,i,d=0; for (i=0;f(s);i++) d+=s; printf("%d\n",d); A) 9 B) 11 C) 19 D) 若有以下说明和语句,int c[4][5],(*p)[5];p=c; 能正确引用 c 数组元素的是 A) p+1 B) *(p+3) C)*(p+1)+3 D) *(p[0]+2]) 30. 有以下程序 { int a=7,b=8,*p,*q,*r; p=&a;q=&b; r=p; p=q;q=r; printf("%d,%d,%d,%d\n",*p,"q,a,b); A) 8,7,8,7 B) 7,8,7,8 C) 8,7,7,8 D) 7,8,8,7 31. s1 和 s2 已正确定义并分别指向两个字符串 若要求 : 当 s1 所指串大于 s2 所指串时, 执行语句 S; 则以下选项中正确的是 A) if(s1>s2)s; B) if(strcmp(s1,s2))s; C) if(strcmp(s2,s1)>0)s; D) if(strcmp(s1,s2)>0)s; 32. 设有定义语句 int x[6]={2,4,6,8,5,7,*p=x,i; 要求依次输出 x 数组 6 个元素中的值, 不能完成此操作的语句是 A) for(i=0;i<6;i++) printf("%2d",*(p++)); B) for(i=0;i<6;i++) printf("%2d",*(p+i)); C) for(i=0;i<6;i++) printf("%2d",*p++); D) for(i=0;i<6;i++) printf("%2d",(*p)++); 33. 有以下程序

5 #include {int a[]={1,2,3,4,5,6,7,8,9,10,11,12,,*p=a+5,*q=null; *q=*(p+5); printf("%d %d\n",*p,*1); A) 运行后报错 B) 6 6 C) 6 11 D) 有以下定义和语句 int a[3][2]={1,2,3,4,5,6,,*p[3]; p[0]=a[1]; 则 *p[0]+1) 所代表的数组元素是 A) a[0][1] B) a[1][0] C) a[1][1] D) a[1][2] 35. 有以下程序 {char str[][10]={"china","beijing",*p=str; printf("%s\n",p+10); A) China B) Bejing C) ng D) ing 36. 有以下程序 {char s[]="abcd",*p; for(p=s+1; p

6 此说明的含义是 : A) fun 了数无返回值 B) fun 函数的返回值可以是任意的数据类型 C) fun 函数的返回值是无值型的指针类型 D) 指针 fun 指向一个函数, 该函数无返回值 42. 有以下程序 { char s[]"yes\n/no",*ps=s; puts(ps+4); *(ps+4)=0; puts(s); A) n/no B) /No C) n/no D) Yes Yes Yes /No/No /No Yes 43. 有以下程序 { unsigned int a; int b=-1; a=b; printf("%u",a); A) -1 B) C) D) 有以下程序 { int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf("%d %d %3.1f %3.1f\n",a,c,f,x); A) B) C) D) 以下选项中非法的表达式是 A)0<=x<100 B)i=j==0 C)(char)(65+3) D)x+1=x 有以下程序 { int a=1,b=2,m=0,n=0,k; k=(n=b>a) (m=a

7 scanf("%d,%d",&x,&y); 语句使变量 x 得到数形式中, 错误的是 A)11 12< 回车 > B)11, 12< 回车 > C)11,12< 回车 > D)11,< 回车 > 12< 回车 > 48. 设有如下程序段 : int x=2002, y=; printf("%d\n",(x,y)); 则以下叙述中正确的是 A) 输出语句中格式说明符的个数少于输出项的个数, 不能正确输出 B) 运行时产生出错信息 C) 输出值为 2002 D) 输出值为 设变量 x 为 float 型且已赋值, 则以下语句中能将 x 中的数值保留到小数点后两位, 并将第三位四舍五入的是 A)x=x* /100.0; B)x=(x* )/100.0; C)x=(int)(x* )/100.0; D)x=(x/ )*100.0; 50. 有以下程序 void fun(int *a,int i,int j) { int t; if(inum B) p->num C) (*p).num D) stu[3].age 52. 有以下程序 mina() { int x[]={1,3,5,7,2,4,6,0,i,j,k; for(i=0;i<3;i++) for (j=2;j>=i;j--)

8 if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k; for(i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j+1]>x[j]){ k=x[j];x[j]=x[j+1];x[j+1]=k; for (i=0;i<3;i++) for(j=4;j<7-i;j++) if(x[j]>x[j+1]){ k=x[j];x[j]=x[j+1];x[j+1]=k; for (i=0;i<8;i++) printf("%d",x); printf("\n"); : A) B) C) D) 有如下程序 #include { FILE *fp1; fp1=fopen("f1.txt","w"); fprintf(fp1,"abc"); fclose(fp1); 若文本文件 f1.txt 中原有内容为 :good, 则运行以上程序后文件 f1.txt 中的内容为 A) goodabc B) abcd C) abc D) abcgood 53~55. 以下程序的功能是 : 建立一个带有头结点的单向链表, 并将存储在数组中的字符依次转储到链表的各个结点中, 请从与下划线处号码对应的一组选若中选择出正确的选项 #include stuct node { char data; struct node *next;; (53) CreatList(char *s) { struct node *h,*p,*q); h=(struct node *) malloc(sizeof(struct node)); p=q=h; while(*s!='\0') { p=(struct node *) malloc(sizeof(struct node)); p->data= (54) ; q->next=p; q= (55) ; s++; p->next='\0'; return h; { char str[]="link list"; struct node *head;

9 head=creatlist(str);... (53) A) char * B) struct node C) struct node* D) char (54) A) *s B) s C) *s++ D) (*s)++ (55) A) p->next B) p C) s D) s->next 56. 有以下程序 { int s=0,a=1,n; scanf("%d",&n); do { s+=1; a=a-2; while(a!=n); printf("%d\n",s); 若要使程序的输出值为 2, 则应该从键盘给 n 输入的值是 A)-1 B)-3 C)-5 D)0 57. 若有如下程序段, 其中 s a b c 均已定义为整型变量, 且 a c 均已赋值 (c 大于 0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是 A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c; 58. 要求以下程序的功能是计算 :s= 1+1/2+1/3+ +1/10 { int n; float s; s=1.0; for(n=10;n>1;n--) s=s+1/n; printf("%6.4f\n",s); 程序运行后输出结果错误, 导致错误结果的程序行是 A)s=1.0; B)for(n=10;n>1;n--) C)s=s+1/n; D)printf("%6.4f\n",s); 59. 已定义 ch 为字符型变量, 以下赋值语句中错误的是 A)ch='\'; B)ch=62+3; C)ch=NULL; D)ch='\xaa'; 60. 若已定义的函数有返回值, 则以下关于该函数调用的叙述中错误的是 A) 函数调用可以作为独立的语句存在 B) 函数调用可以作为一个函数的实参 C) 函数调用可以出现在表达式中 D) 函数调用可以作为一个函数的形参 61. 有以下函数定义 : void fun(int n, double x) { 若以下选项中的变量都已正确定义并赋值, 则对函数 fun 的正确调用语句是 A)fun(int y,double m); B)k=fun(10,12.5); C)fun(x,n); D)void fun(n,x); 62. 有以下程序 void fun(char *a, char *b)

10 { a=b; (*a)++; { char c1='a',c2='a',*p1,*p2; p1=&c1; p2=&c2; fun(p1,p2); printf("%c%c\n",c1,c2); A)Ab B)aa C)Aa D)Bb 63. 若程序中已包含头文件 stdio.h, 以下选项中, 正确运用指针变量的程序段是 A)int *i=null; B)float *f=null; scanf("%d",i); *f=10.5; C)char t='m', *c=&t; D)long *L; *c=&t; L='\0'; 64. 有以下程序 #include { printf("%d\n",null); A)0 B)1 C)-1 D)NULL 没定义, 出错 65. 已定义 c 为字符型变量, 则下列语句中正确的是 A)c='97'; B)c="97"; C)c=97; D)c="a"; 66. 以下不能正确定义二维数组的选项是 A)int a[2][2]={{1,{2; B)inta[][2]={1,2,3,4; C)int a[2][2]={{1,2,3; D)int a[2][]={{1,2,{3,4; 67. 以下选项中不能正确把 cl 定义成结构体变量的是 A)typedef struct B)struct color cl { int red; { int red; int green; int green; int blue; int blue; COLOR; ; COLOR cl; C)struct color D)struct { int red; { int red; int green; int green; int blue; int blue; cl; cl; 68. 以下能正确定义一维数组的选项是 A)int num[]; B)#define N 100 int num[n]; C)int num[0..100]; D)int N=100; int num[n]; 69. 下列选项中正确的语句组是 A)char s[8]; s={"beijing"; B)char *s; s={"beijing"; C)char s[8]; s="beijing"; D)char *s; s="beijing"; 70. 已定义以下函数 fun(int *p)

11 { return *p; 该函数的返回值是 A) 不确定的值 B) 形参 p 中存放的值 C) 形参 p 所指存储单元中的值 D) 形参 p 的地址值 71. 二 填空题 1. 以下程序段的输出结果是 int i=9; printf("%o\n",i); 2. 以下 { int a,b,c; a=25; b=025; c=0x25; printf("%d %d %d\n',a,b,c); 3. 以下 { int p[7]={11,13,14,15,16,17,18; int i=0,j=0; while(i<7 && p%2==1) j+=p[i++]; printf("%d\n",j); 4. 以下 { int x=1,y=0,a=0,b=0; switch(x) {case 1: switch(y) { case 0: a++; break; case 1:b++; break; case 2:a++;b++; break; printf("%d %d\n",a,b); 5. 以下 { int a[4][4]={{1,2,3,4,{5,6,7,8,{11,12,13,14,{15,16,17,18; int i=0,j=0,s=0; while(i++<4) {

12 if(i==2 i==4) continue; j=0; do{ s+= a[j]; j++; while(j<4); printf("%d\n",s); 6. 以下 main () { char a[]="language",b[]="programe"; char *p1,*p2; int k; p1=a; p2=b; for(k=0;k<=7;k++) if(*p1+k)==*(p2+k)) printf("%c",*(p1+k)); 7. 以下 { char a[]=" ",*p; int i=0; p=a; while(*p) { if(i%2==0) *p='*"; p++;i++; puts(a); 8. 以下程序中, for 循环体执行的次数是 #define N 2 #define M N+1 #define K M+1*M/2 { int i; for(i=1;i

13 F( int x) { return ; 10. 以下程序从终端读入数据到数组中, 统计其中正数的个数, 并计算它们之和 请填空 { int i,a[20],sun,count; suum=count=0; for(i=0;i<20;i++) scanf("%d", ); for(i=0;i<20;i++) { if(a>0) { count++; sum+= ; printf("sum=%d,count=%d\n",sum,count); 11. 以下程序中, 函数 SumColumM 的功能是 : 求出 M 行 N 列二维数组每列元素中的最小值, 并计算它们的和值 和值通过形参传回主函数输出 请填空 #define M 2 #define N 4 void SumColumMin(int a[m][n], int *sum) { int i,j,k,s=0; for(i=0;ia[j]) k=j; s+= ; *sum =s; { int x[m][n]={3,2,5,1,4,1,8,3,s; SumColumMin( ); printf("%d\n",s); 12. 以下 { int p=30; printf("%d\n",(p/3>0? p/10 : p%3)); 13. 以下 { char m; m='b'+32; printf("%c\n",m);

14 14. 以下 { int a=1,b=3,c=5; if (c=a+b) printf("yes\n"); else printf("no\n"); 15. 以下 { int i,m=0,n=0,k=0; for(i=9; i<=11;i++) switch(i/10) { case 0: m++;n++;break; case 10: n++; break; default: k++;n++; printf("%d %d %d\n",m,n,k); 16. 执行以下程序后, 输出 '#' 号的个数是 #include { int i,j; for(i=1; i<5; i++) for(j=2; j<=i; j++) putchar('#'); 17. 以下程序的功能是调用函数 fun 计算 :m= , 并输出结果 请填空 int fun( int n) { int m=0,f=1,i; for(i=1; i<=n; i++) { m+=i*f; f= ; return m; { printf("m=%d\n", ); 18. 以下 { int i,n[]={0,0,0,0,0; for(i=1;i<=4;i++) { n[i]=n[i-1]*2+1; printf("%d ",n[i]); 19. 以下

15 { int i,j,a[][3]={1,2,3,4,5,6,7,8,9; for(i=0;i<3;i++) for(j=i+1;j<3;j++) a[j][i]=0; for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); 20. 以下 int a=5; fun(int b) { static int a=10; a+=b++; printf("%d ",a); { int c=20; fun(c); a+=c++; printf("%d\n",a); 21. 请在以下程序第一行的下划线处填写适当内容, 使程序能正确运行 ( double,double); { double x,y; scanf("%lf%lf",&x,&y); printf("%lf\n",max(x,y)); double max(double a,double b) { return(a>b? a:b); 22. 以下程序运行后输入 :3,abcde< 回车 >, 则输出结果是 #include move(char *str, int n) { char temp; int i; temp=str[n-1]; for(i=n-1;i>0;i--) str[i]=str[i-1]; str[0]=temp; { char s[50]; int n,i, z; scanf("%d,%s",&n,s); z=strlen(s); for(i=1; i<=n; i++) move(s, z); printf("%s\n",s);

16 23. 以下 fun(int x) { if(x/2>0) fun(x/2) printf("%d ",x); { fun(6); 24. 已有定义如下 : struct node { int data; struct node *next; *p; 以下语句调用 malloc 函数, 使指针 p 指向一个具有 struct node 类型的动态存储空间 请填空 p = (struct node *)malloc( ); 25. 以下程序的功能是将字符串 s 中的数字字符放入 d 数组中, 最后输出 d 中的字符串 例如, 输入字符串 :abc123edf456gh, 执行程序后输出 : 请填空 #include #include { char s[80], d[80]; int i,j; gets(s); for(i=j=0;s[i]!='\0';i++) if( ) { d[j]=s[i]; j++; d[j]='\0'; puts(d); 26. 语句 :x++;?++x; x=x+1;?x=l+x;, 执行后都使变量 x 中的值增 1, 请写出一条同一功能的赋值语句 ( 不得与列举的相同 ) 27. 设 y 是 int 型变量, 请写出判断 y 为奇效的关系表达式 28. 以下 { int i=10, j=0; do { j=j+i; i--; while(i>2); printf("%d\n",j); 29. 设有以下程序 : { int n1,n2; scanf("%d",&n2);

17 while(n2!=0) { n1=n2%10; n2=n2/10; printf("%d",n1); 程序运行后, 如果从键盘上输入 1298; 则输出结果为 30. 以下程序输出的最后一个值是 int ff(int n) { static int f=l; f=f*n; return f; { int i; for(i=1;i<=5;i++ printf("%d\n",ff(i)); 三 编程题 1. 编写一个函数, 对传送过来的三个数选出最大和最小数, 并通过形参传回调用函数 2. 输入一个字符串, 然后判定它是否为一个 Palindrome, 所谓 Palindrome 是指其从正反两 个方向看都是一样的 ( 不分大小写 ), 如 Madam 3. 请编写程序统计输入的一行中小写字母的个数 4. 编写一个函数, 把一个字符串中的小写字母改为大写字母, 其余不变 并从键盘输入一 个字符串, 然后使用该函数将小写字母变为大写字母后输出

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。