《C语言程序设计复习题.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计复习题.pdf(40页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、C 语言程序设计复习题 一、选择题 1.以下选项中可作为C 语言合法整数的是 A)10110B B)0386 C)0Xffa D)x2a2 2.以下选项中合法的字符常量是 A)B B)010 C)68 D)D 3.以下不能定义为用户标识符的是 A)scanf B)Void C)_3com_ D)int 4.以下语句或语句组中,能正确进行字符串赋值的是 A)char*sp;*sp=right!;B)char s10;s=right!;C)char s10;*s=right!;D)char*sp=right!5.结构化程序由三种基本结构组成,三种基本结构组成的算法 可以完成任何复杂的任务 B)只能
2、完成部分复杂的任务 只能完成符合结构化的任务 D)只能完成一些简单的任务 6.在 C 语言中,合法的长整型常数是 A)OL B)4962710 C)324562&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=xy?x:y;int z;z=xy?x:y;return z;C)max(int x,int y)D)int max(i
3、nt x,int y)int z;return(xy?x:y);z=xy?x:y;return(z);9.假定 x 和 y 为 double 型,则表达式 x=2,y=x+3/2 的值是 A)3.500000 B)3 C)2.000000 D)3.000000 10.以下合法的赋值语句是 A)x=y=100 B)d-;C)x+y;D)c=int(a+b);11.设正 x、y 均为整型变量,且 x=10 y=3,则以下语句的输出结果是 printf(%d,%dn,x-,-y);A)10,3 B)9.3 C)9.2 D)10.2 12.x、y、z 被定义为 int 型变量,若从键盘给 x、y、z
4、输入数据,正确的输入语句是 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.以下定义语句中正确的是 char a=Ab=B;B)float a=b=10.0;int a=10,*b=&a;D)float*a,b=&a;14.下列选项中,不能用作标识符的是 A)_1234_ B)_1_2 C)int_2_ D)2_int_ 15.有以下定义语句 double a,b;int w;long c;若各变量已正确赋值,则下列选项中正确的表达式是 a=a+b=b+C)(c+w)
5、%(int)a D)w=a=b;16.有以下程序 x=-m+;8/+n;printf(%dn,x);程序运行后的输出结果是 3 B)5 C)-1 D)-2 17.有以下程序 print(%c,+a);printf(%cn,b=a+);程序运行后的输出结果是 b,b B)b,c C)a,b D)a,c 18.有以下程序 printf(%o%on,mn,n);程序运行后的输出结果是 0256 0400 B)0256 256 C)256 400 D)400 400 19.有以下程序 printf(%dn,a,b);程序运行后的输出结果是 错误信息 B)666 C)888 D)666,888 20.有
6、以下程序 for(i=0;i3;i+)switch(i)case 0:printf(%d,i);case 2:printf(%d,i);default:printf(%d,i);程序运行后的输出结果是 022111 B)021021 C)000122 D)012 21.若 x 和 y 代表整型数,以下表达式中不能正确表示数学关系|x-y|10 的是 abs(x-y)-10&x-y10 (x-y)10 D)(x-y)*(x-y)b)if(bc)printf(%d,d+1);else printf(%d,+d+1);printf(%dn,d);程序运行后的输出结果是 2 B)3 C)43 D)44
7、 23.下列条件语句中,功能与其他语句不同的是 n,x);else printf(%dn,y);n,y);else printf(%dn,x);n,x);else printf(%dn,y);n,x);else printf(%dn,y);24.有以下程序 for(;)if(i=3|i=5)continue;if(i=6)break;i+;s+=i;printf(%dn,s);程序运行后的输出结果是 B)13 C)21 D)程序进入死循环 25.若变量已正确定义,要求程序段完成求5!的计算,不能完成此操作的程序段是 for(i=1,p=1;i=5;i+)p*=i;for(i=1;i=5;i+)
8、p=1;p*=i;i=1;p=1;while(i=5)p*=i;i+;i=1;p=1;dop*=i;i+;while(i=5);26.有以下程序 scanf(%c,%c,%d,%d,&a,&b,&c,&d);printf(c,%c,%c,%cn,a,b,c,d);若运行时从键盘上输入:6,5,65,66。则输出结果是 6,5,A,B B)6,5,65,66 C)6,5,6,5 D)6,5,6,6 27.以下能正确定义二维数组的是 int a3;B)int a3=22*3;int a3=;D)int a23=1,2,3,4;28.有以下程序 for(i=0;f(s);i+)d+=s;n,d);程
9、序运行后的输出结果是 9 B)11 C)19 D)21 29.若有以下说明和语句,int c45,(*p)5;p=c;能正确引用 c 数组元素的是 p+1 B)*(p+3)D)*(p0+2)30.有以下程序 p=&a;q=&b;r=p;p=q;q=r;printf(%d,%d,%d,%dn,*p,q,a,b);程序运行后的输出结果是 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;则以下选项中正确的是 if(s1s2)S;B)if(strcmp(s1,s2
10、)S;if(strcmp(s2,s1)0)S;D)if(strcmp(s1,s2)0)S;32.设有定义语句 要求依次输出 x 数组 6 个元素中的值,不能完成此操作的语句是 for(i=0;i6;i+)printf(%2d,*(p+);for(i=0;i6;i+)printf(%2d,*(p+i);for(i=0;i6;i+)printf(%2d,*p+);for(i=0;i6;i+)printf(%2d,(*p)+);33.有以下程序 *q=*(p+5);printf(%d%dn,*p,*1);程序运行后的输出结果是 运行后报错 B)6 6 C)6 11 D)5 10 34.有以下定义和语
11、句 则*p0+1)所代表的数组元素是 a01 B)a10 C)a11 D)a12 35.有以下程序 printf(%sn,p+10);程序运行后的输出结果是 B)Bejing C)ng D)ing 36.有以下程序 for(p=s+1;ps+4;p+)printf(%sn,p);程序运行后的输出结果是 B)A C)B D)BCD D B C CD C D D D 37.在函数调用过程中,如果函数 funA 调用了函数 funB,函数 funB 又调用了函数 funA,则 称为函数的直接递归调用 B)称为函数的间接递归调用 称为函数的循环调用 D)C 语言中不允许这样的递归调用 38.已有定义:
12、int i,a10,*p;,则合法的赋值语句是 p=100;B)p=a5;C)p=a2+2;D)p=a+2;39.以下叙述中正确的是 A)预处理命令行必须位于源文件的开头 B)在源文件的一行上可以有多条预处理命令 C)宏名必须用大写字母表示 D)宏替换不占用程序的运行时间 40.设有定义语句:char c1=92,c2=92;,则以下表达式中值为零的是 c1c2 B)c1&c2 C)c2 D)c1|c2 41.程序中对 fun 函数有如下说明 void*fun();此说明的含义是:fun 了数无返回值 fun 函数的返回值可以是任意的数据类型 fun 函数的返回值是无值型的指针类型 指针 fu
13、n 指向一个函数,该函数无返回值 42.有以下程序 main()n/No,*ps=s;puts(ps+4);*(ps+4)=0;程序运行后的输出结果是 n/No B)/No C)n/NO D)Yes Yes Yes/No/No/No Yes 43.有以下程序 ed int a;int b=-1;a=b;printf(%u,a);程序运行后的输出结果是 -1 B)65535 C)32767 D)-32768 44.有以下程序 main()int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);printf(%d%d%3.1f%3.1fn,a,
14、c,f,x);程序运行后的输出结果是 A)1 65 1 6.5 B)1 65 1.5 6.5 C)1 65 1.0 6.5 D)2 65 1.5 6.5 45.以下选项中非法的表达式是 A)0=xa)|(m=aB);printf(%d,%dn,k,m);程序运行后的输出结果是 A)0,0 B)0,1 C)1,0 D)1,1 47.有定义语句:int x,y;,若值 11,变量 y 得到数值 12,下面四组输入要通过 scanf(%d,%d,&x,&y);语句使变量 x 得到数形式中,错误的是 A)11 12 B)11,12 C)11,12 D)11,12 48.设有如下程序段:int x=20
15、02,y=2003;printf(%dn,(x,y);则以下叙述中正确的是 A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 B)运行时产生出错信息 C)输出值为 2002 D)输出值为 2003 49.设变量 x 为 float 型且已赋值,则以下语句中能将 x 中的数值保留到小数点后两位,并将第三位四舍五入的是 A)x=x*100+0.5/100.0;B)x=(x*100+0.5)/100.0;C)x=(int)(x*100+0.5)/100.0;D)x=(x/100+0.5)*100.0;50.有以下程序 if(inum B)p-num C)(*p).num D)stu3.a
16、ge 52.有以下程序 ,k;for(i=0;ixj)k=xj;xj=xj+1;xj+1=k;for(j=4;jxj)k=xj;xj=xj+1;xj+1=k;for(i=0;i3;i+)for(j=4;jxj+1)k=xj;xj=xj+1;xj+1=k;for(i=0;idata=(54);q-next=p;q=(55);s+;p-next=0;return h;struct node*head;head=CreatList(str);.53)A)char*B)struct node C)struct node*D)char 54)A)*s B)s C)*s+D)(*s)+5)A)p-next
17、 B)p C)s D)s-next 56.有以下程序 main()int s=0,a=1,n;scanf(%d,&n);do s+=1;a=a-2;while(a!=n);printf(%dn,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;b1;n-)s=s+1/n;printf(%6.4fn,s);程序运行后输出结果错误,导致错误结果的程序行是 A)s=1.0;B)for(n=10;n1;n-)C)s=s+1/n;
18、D)printf(%6.4fn,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)
19、fun(x,n);D)void fun(n,x);62.有以下程序 void fun(char*a,char*b)a=b;(*a)+;main()char c1=A,c2=a,*p1,*p2;p1=&c1;p2=&c2;fun(p1,p2);printf(%c%cn,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;6
20、4.有以下程序#include main()printf(%dn,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 a22=1,2;B)inta2=1,2,3,4;C)int a22=1,2,3;D)int a2=1,2,3,4;67.以下选项中不能正确把 cl 定义成结构体变量的是 A)typedef struct B)struct color cl int red;int red;int gr
21、een;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 numN;C)int num0.100;D)int N=100;int numN;69.下列选项中正确的语句组是 A)char s8;s=Beijing;B)char*s;s=Beijing;C)char s8;s=Beijing;D)ch
22、ar*s;s=Beijing;70.已定义以下函数 fun(int*p)return*p;该函数的返回值是 A)不确定的值 B)形参 p 中存放的值 C)形参 p 所指存储单元中的值 D)形参 p 的地址值 二、填空题 1.以下程序段的输出结果是 _ n,i);2.以下程序运行后的输出结果是 _。n()a=25;b=025;c=0 x25;printf(%d%d%dn,a,b,c);3.以下程序运行后的输出结果是 _。int i=0,j=0;while(i7&p%2=1)j+=pi+;printf(%dn,j);4.以下程序运行后的输出结果是 _。switch(x)case 1:switch(
23、y)case 0:a+;break;case 1:b+;break;case 2:a+;b+;break;printf(%d%dn,a,b);5.以下程序运行后的输出结果是 _。main()int i=0,j=0,s=0;while(i+4)if(i=2|i=4)continue;j=0;do s+=aj;j+;while(j4);printf(%dn,s);6.以下程序运行后的输出结果是 _ _。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.以下程序运行后的输出结果是 _。p=a
24、;8.以下程序中,for 循环体执行的次数是 _ _。for(i=1;iK;i+).9.通过函数求 f(x)的累加和,其中 f(x),x2,1 printf(The sum=%dn,SunFun(10);int x,s=0;for(x=0;x=n;x+)s+=F(_);return s;10.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。sun,count;for(i=0;i20;i+)scanf(%d,_ _);for(i=0;i0)count+;sum+=_;printf(sum=%d,count=%dn,sum,count);11.以下程序中,函数 SumC
25、olumM 的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。int*sum)for(i=0;iN;i+)k=0;for(j=1;jaj)k=j;s+=_;*sum=s;t xMN=3,2,5,1,4,1,8,3,s;SumColumMin(_ _);printf(%dn,s);12.以下程序运行后的输出结果是_。main()int p=30;printf(%dn,(p/30?p/10:p%3);13.以下程序运行后的输出结果是 _。main()char m;m=B+32;printf(%cn,m);14.以下程序运行后的输出结果是
26、。main()int a=1,b=3,c=5;if(c=a+b)printf(yesn);else printf(non);15.以下程序运行后的输出结果是。main()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%dn,m,n,k);16.执行以下程序后,输出#号的个数是。#include main()int i,j;for(i=1;i5;i+)for(j=2;j=i;j+)putchar(#);17.以下程序的功能是调用函
27、数 fun 计算:m=1-2+3-4+9-10,并输出结果。请填空。int fun(int n)int m=0,f=1,i;for(i=1;i=n;i+)m+=i*f;f=_;return m;main()printf(m=%dn,);18.以下程序运行后的输出结果是 _。main()int i,n=0,0,0,0,0;for(i=1;i=4;i+)ni=ni-1*2+1;printf(%d,ni);19.以下程序运行后的输出结果是。main()int i,j,a3=1,2,3,4,5,6,7,8,9;for(i=0;i3;i+)for(j=i+1;j3;j+)aji=0;for(i=0;i3
28、;i+)for(j=0;jb?a:b);22.以下程序运行后输入:3,abcde,则输出结果是 _。#include move(char*str,int n)char temp;int i;temp=strn-1;for(i=n-1;i0;i-)stri=stri-1;str0=temp;main()char s50;int n,i,z;scanf(%d,%s,&n,s);z=strlen(s);for(i=1;i0)fun(x/2)printf(%d,x);main()fun(6);24.已有定义如下:struct node int data;struct node*next;*p;以下语句
29、调用 malloc 函数,使指针 p 指向一个具有 struct node 类型的动态存储空间。请填空。p=(struct node*)malloc(_);25.以下程序的功能是将字符串 s 中的数字字符放入 d 数组中,最后输出 d 中的字符串。例 如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#include#include main()char s80,d80;int i,j;gets(s);for(i=j=0;si!=0;i+)if(_)dj=si;j+;dj=0;puts(d);26.语句:x+;?+x;x=x+1;?x=l+x;,执行后都使变量
30、 x 中的值增 1,请写出一条同一功 能的赋值语句(不得与列举的相同)_。27.设 y 是 int 型变量,请写出判断 y 为奇效的关系表达式_。28.以下程序运行后的输出结果是_。main()int i=10,j=0;do j=j+i;i-;while(i2);printf(%dn,j);29.设有以下程序:main()int n1,n2;scanf(%d,&n2);while(n2!=0)n1=n2%10;n2=n2/10;printf(%d,n1);程序运行后,如果从键盘上输入 1298;则输出结果为_。30.以下程序输出的最后一个值是_。int ff(int n)static int
31、f=l;f=f*n;return f;main()int i;for(I=1;I=5;I+printf(%dn,ff(i);三、编程题 1(将 10 个整数输入到一个数组中,然后再将其按输入顺序的逆序进行排列并输出。2(输入一个字符串,然后判定它是否为一个 Palindrome,所谓Palindrome 是指其从正反两个方向看都是一样的(不分大小写),如“Madam”。3(请编写程序统计输入的一行中小写字母的个数。4(编写一个函数,把一个字符串中的小写字母改为大写字母,其余不变。并从键盘输入一个字符串,然后使用该函数将小写字母变为大写字母后输出。5(编写一个函数,对传送过来的三个数选出最大和最小数,并通过形参传回调用函数。