C语言习题集.docx
- 文档编号:10304142
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:48
- 大小:39.70KB
C语言习题集.docx
《C语言习题集.docx》由会员分享,可在线阅读,更多相关《C语言习题集.docx(48页珍藏版)》请在冰豆网上搜索。
C语言习题集
习题一
一.填空题
1.i为int型变量,且初值是3,有表达式i++3,则
该表达式的值是,变量i的值是。
2.i为int型变量,且初值是2,有表达式++i3,则
该表达式的值是,变量i的值是。
3.i为int型变量,且初值是3,有表达式i=i+=i5,则
该表达式的值是,变量i的值是。
4.i为int型变量,且初值是3,有表达式i=(a=5,b=10)+(i+=b,b+=a),
则该表达式的值是,变量i,a,b的值分别是。
5.i为int型变量,且初值是3,有表达式i=(i+=i,i=i),i10,i%4,则
该表达式的值是,变量i的值是。
6.说明变量为双精度的关键字是。
7.在TurboC中,整型数据的表示形式有种。
二.选择题
1.若a,b,c,d都是int型变量且初值均为10,不正确的赋值语句是()。
A.a=b=c=d;B.a=b++;C.a+b++;D.d=(a=b=125)c++;
2.若a,b,c,d都是float型变量且初值为10.95,不正确的赋值语句是()。
A.a=b=15;B.d=int(a+c);C.a=(int)(b+1);D.++a;
3.若a,b,c均为int型变量且有值,要交换变量a和b的值,正确的语句组是()。
A.c=a,a=b,b=c;B.a=b;b=a;
C.c=a;a=b;b=c;D.c=a;b=a;a=c;
4.若a,b均为int型变量,x,y均为float型变量,正确的输入函数是()。
A.scanf("%d%f",&a,&b);B.scanf("%d%f",&a,&x);
C.scanf("%d%d",a,b);D.scanf("%f%f",x,y);
5.若x,y均为double型变量,正确的输入函数是()。
A.scanf("%f%f",&x,&y);B.scanf("%d%d",&x,&y);
C.scanf("%lf%lf",&x,&y);D.scanf("%lf%lf",x,y);
6.若x为char型变量,y为int型变量,x,y均有值,正确的输出函数是()。
A.printf("%c%c",x,y);B.printf("%c%s",x,y);
C.printf("%f%c",x,y);D.printf("%f%d",x,y);
7.若x,y均为int型变量且有值,要输出x,y的值,正确的输出函数是()。
A.printf("%d%d",&x,&y);B.printf("%f%f",x,y);
C.printf("%f%d",x,y);D.printf("%d%d",x,y);
8.x为int型变量,且值为2345,不正确的输出函数是()。
A.printf("%d",x);B.printf("%3d",x);
C.printf("%c",x);D.printf("%s",x);
习题二
一.写出下列程序的运行结果
1.下面程序的运行结果是()。
main()
{inta,b;
a=23;b=87;
printf("%d%d\n",a,b);
}
A.23B.23,87C.a=23D.2387
87b=87
2.下面程序的运行结果是()。
main()
{floatx,y;
x=12.34;y=0.00045;printf("%f,%f",x,y);
}
A.12.34,0.00045B.12.340000,0.000450
C.12.340.00045D.12.3400000.000450
3.下面程序的运行结果是()。
main()
{inth=34,k=56;
printf("h=%d\nk=%d\n",h,k);
}
A.h=34B.h=34k=56C.3456D.34
k=5656
4.下面程序的运行结果是()。
main()
{floatx=12.34567,y=345.2354;
printf("x=%5.3f,y=%5.3f",x,y);
}
A.12.346,345.235B.x=12.346,y=345.235
C.12.345670,345.235000D.x=12.34567,y=345.2354
5.下面程序的运行结果是()。
main()
{ints=3,w=5;
printf("%u,%u,%d,%d",s,w,s,w);
}
A.3,5,3,5 B.3535 C.65533,5,3,5 D.65533,65531,3,5
6.运行下面程序时若从键盘输入:
123456789输出结果是()。
main()
{inta,b,c;
scanf("%3d%3d%3d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
A.a=123,b=45,c=678B.a=123b=454c=678
C.123,45,678D.a=123,b=456,c=789
7.运行下面程序时若从键盘输入:
123456789输出结果是()。
main()
{inta,b,c;
scanf("%3d%3d%3d",&a,&b,&c);
printf("a=%d,b=%d,c=%d",a,b,c);
}
A.a=123,b=45,c=678B.a=123,b=456,c=789
C.123,456,789D.a=123b=456c=789
8.以下程序若a=12,b=45,c=3467,正确的数据输入方法是()。
main()
{inta,b,c;
scanf("a=%db=%dc=%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
}
A.a=12b=45c=3467B.12453467
C.a=12b=45c=3467D.a=12b=45c=3467
二.填空题
1.C语句的最后用结束。
2.执行printf("%d",045);函数的结果是。
3.执行printf("%u\n",-0x2a);函数的结果是。
4.若x是整型,且x=1,执行printf("%o\n",x);函数的结果是。
5.若一个C程序包含若干个函数,程序的执行总是从函数开始。
习题三
1.设a=1,b=2,c=3,写出下列关系表达式的值
(1)(a
(2)(c(a (3)a+b==c。 (4)a+b>=c。 2.设a=1,b=2,c=3,d=4写出下列逻辑表达式的值 (1)a&&b&&c。 (2)a||! b||! c。 (3)++a||b++&&++c||d++。 (4)(! (a+b)+c1)&&(b+c/2)。 (5)a! =11&&b<4。 3.设x=y=z=1,则执行逻辑表达式++x||++y&&++z后,x,y,z的值分别为。 4.设x=y=z=1,执行逻辑表达式++x&&y||++z后,x,y,z的值分别为。 5.设a=1,b=2,c=3,d=4,x=1,y=1,则执行逻辑表达式(x=a>b)&&(y=c>d)后,x,y的值分别为。 6.在以下一组运算符中,优先级最高的运算符是() A.<=B.=C.%D.&& 7.以下程序的运行结果是。 main() {inta=1,b=4,k; k=(++a<0)&&! (b<=0); printf("%d,%d,%d\n",k,a,b); } 8.在C中,下列哪一个表达式能正确表示a10或a0() A.a>=10ora<=0B.a>=10|a<=0 C.a>=10||a<=0D.a>=10&&a<=0 9.若a,b,c均为int型变量,则执行以下语句后,a,b,c的值分别为。 a=b=c=1; ++a||++b&&++c 10.给出下列程序的输出结果 (1)main() {inta,b,c; a='E';b='J';c='W'; if(a>b) if(a>c)printf("%c\n",a); elseprintf("%c\n",c); elseif(b>c)printf("%c\n",b); elseprintf("%c\n",c); } 结果是: (2)main() {intx=100,a=10,b=20,OK1=5,OK2=0; if(a if(b! =15) if(! OK1)x=1; else if(OK2)x=10; x=1; printf("%d\n",x); } 结果是: (3)运行两次下面的程序,如果分别从键盘上输入数值6和4,其运行结果分别为 main() {intx; scanf("%d",&x); if(x++>5)printf("%d",x); elseprintf("%d\n",x); } 输入6时,结果是: 输入4时,结果是: 11.若有定义: floatx;inta,b;再有下面4个switch语句 A.switch(x) {case1.0: printf("\n"); case2.0: printf("\n");} B.switch(x) {case1,2: printf("\n";) case3: printf("\n");} C.switch(a+b); {case1: printf("\n"); case1+2: printf("\n");} D.switch(a+b) {case1: printf("\n"); case2: printf("\n");} 正确的switch语句是(),其它switch语句错在什么地方? 习题四 1.下面程序若在运行时从键盘输入3.62.4,运行结果为()。 #include"math.h" main() {floatx,y,z; scanf("%f%f",&x,&y); z=x/y; while (1) {if(fabs(z)>1.0){x=y;y=z;z=x/y;} elsebreak; } printf("%f\n",y); } A.1.500000B.1.600000C.2.000000D.2.400000 2.下面程序的输出是()。 main() {intx=3,y=6,a=0; while(x++! =(y=1)) {a+=1; if(y } printf("x=%d,y=%d,a=%d\n",x,y,a); } A.x=4,y=4,a=1B.x=5,y=5,a=1 C.x=5,y=4,a=3D.x=5,y=4,a=1 3.以下程序的功能是: 从键盘上输入若干个学生的成绩,统计并输出最高成绩和最低成绩,当输入负数时结束,请填空。 main() {floatx,amax,amin; scanf("%f",&x); amax=x; amin=x; while() {if(x>amax)amax=x; if()amin=x; scanf("%f",&x); } printf("\namax=%f\namin=%f\n",amax,amin); } 4.下面程序的输出是: 。 main() {intx=2; while(x); printf("%d\n",x); } 5.下面程序的运行结果为: 。 main() {inti=0,sum=1; do {sum+=i++;} while(i<6); printf("%d\n",sum); } 6.C语句中,下列说法中正确的是()。 A.不能使用do-while语句构成的循环; B.do-while语句构成的循环必须用break语句才能退出; C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环; D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环。 7.下面程序的输出结果是: 。 main() {inty=9; for(;y>0;y) if(y%3==0) {printf("%d",y); continue; } } 8.若x是int型变量,且有下面的程序段,其运行结果为()。 for(x=3;x<6;x++)printf((x%2)? ("%d"): ("##%d\n"),x); A.3B.##3C.##2D.3##4 ##434##55 5##5 9.以下程序的运行结果是()。 main() {inti; for(i=1;i<=5;i++) {if(i%2)printf(""); elsecontinue; printf("#"); } printf("$\n"); } A.###$B.###$C.##$D.##$ 10.下面程序的功能是根据以下的公式,返回满足精度eps要求下的值,请填空。 main() {doubles=0.0,t=1.0; intn; floateps; scanf("%f",&eps); for(;t>eps;n++) {s+=t; t=nt/(2n+1); } printf("pi=%f\n",); } 习题五 1.以下正确的叙述是()。 A.C语言的主函数是无参函数 B.C语言的主函数最多允许有1个参数 C.C语言的主函数最多允许有2个参数 D.C语言的主函数可以有2个以上的参数 2.C语言中函数返回值的类型是由()决定的。 A.return语句中的表达式类型 B.调用该函数的主调函数类型 C.调用函数时临时确定 D.定义函数时所指定的函数类型 3.以下不正确的描述是()。 A.调用函数时,实参可以是表达式 B.调用函数时,简单变量的实参与形参可以共用内存单元 C.调用函数时,将为形参分配内存单元 D.调用函数时,实参与形参的类型必须一致 4.若x为int型变量,则以下函数fun的返回值类型为()。 fun(x) …… {printf("%d\n",x);} A.返回值为void类型B.无法确定返回值 C.返回值为int类型D.没有返回值 5.C语言规定,调用一个函数时,实参变量与形参变量之间的数据传递是() A.地址传递B.由实参传给形参,再由形参传回来给实参 C.值传递D.由用户指定传递方式 6.填空 ①变量存储类别,从作用域的角度分为变量和变量。 ②局部静态变量在时赋初值且只赋值一次。 7.判断以下说法的正误 一个源文件由一个或多个函数组成,C程序是以一个源文件为编译单位的。 () 局部静态变量在函数调用结束后仍存在,但其它函数不能引用它。 () 自动(auto)变量是由编译系统自动处理的,对自动变量分配存储空间后,就赋值为0,执行函数后自动释放。 () 由于全局变量的作用域增加了函数间数据联系的渠道,利用全局变量可以从函数得到一个以上的返回值,故建议在程序中尽量定义全局变量。 () 8.在一个C源程序文件中,若要定义一个只允许本源文件中所有函数使用的全局变量,则该变量的存储类应该是()。 A.externB.registerC.autoD.Static 9.以下不正确的描述为() A.在函数之外定义的变量称为外部变量,外部变量是全局变量 B.在一个函数中既可以使用局部变量,又可以使用全局变量 C.外部变量定义和外部变量说明的含义不同 D.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用。 10.以下不正确的描述为() A.不同函数中可以使用相同名字的变量 B.形式参数是局部变量 C.在一个函数内部定义的变量只在本函数范围内有效 D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效 11.在C语言中,对于存储类型为()的变量,只有在使用它们时才 占用内存单元。 A.static和autoB.静态(static) C.register和staticD.auto和register 12.C语言中形参的缺省存储类别是() A.自动(auto)B.静态(static) C.寄存器(register)D.外部(extern) 13.下列程序的运行结果是: 。 unsignedfun3(unsignednum) {unsignedk=1; do {k=num%10; num/=10; }while(num); return(k); } main() {unsignedn=26; printf("%d\n",fun3(n)); } 14.下列程序的运行结果是: 。 longfun4(intn) {longs; if((n==1)||(n==2))s=2; elses=n+fun4(n1); return(s); } main() {longx; x=fun4(4); printf("%ld\n",x); } 15.下列程序的运行结果是: 。 #include"stdio.h" main() {intn=4,x=2,s; s=fun(x,n);printf("s=%d\n",s); } fun(intx,intn) {if(n==1)return(x); elsereturn(xfun(x,n1)); } 16.下列程序的运行结果是: 。 intfun2(intx,inty) {intm=5; return(xym); } main() {inta=7,b=5; printf("%d\n",fun2(a,b)); } 17.下列程序的运行结果是: 。 fun(intp) {intd=5; d+=p++; printf("%d",d); } main() {intd=1,a=3; fun(a); d+=a++;printf("%d\n",d); } 18.下列程序的运行结果是: 。 fun(intn) {if(n==1)return(0); elseif(n==2||n==3)return (1); elsereturn(fun(n1)+fun(n2)+fun(n3)); } main() {intx; x=fun(10);printf("x=%d\n",x); } 19.下面程序的执行结果是: intx=3; main() {inti; for(i=1;i<4;i++) {++x;f();} printf("%d\n",x); } f() {staticinti; intx=10; x/=x++;printf("%d",x); } 20.下列程序的运行结果是: fun(intx) {staticinta=3; a+=x; return(a); } main() {intk=3,m=2,n; n=fun(k); printf("n=%d\n",n); n=fun(m); printf("n=%d\n",n); } 21.下列程序的运行结果是: #include"stdio.h" f(inta) {intb=0; staticintc=3; a=c++,b++; return(a); } main() {inta=2,i,k; for(i=0;i<2;i++)k=f(a++); printf("%d\n",k); } 22.下列程序的运行结果是: #include"stdio.h" inti=2,j=2; main() {inti=2; printf("i=%d,j=%d\n",i,j); i=(i+++j)+(j+++i); {inti=0; printf("i=%d,j=%d\n",i,j); } printf("i=%d,j=%d\n",i,j); } 习题六 一、选择题 1.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用双引号(“”)括起时,寻找被包含文件的方式为()。 A.直接按系统设定的标准方式搜索目录 B.先在源程序所在目录搜索,再按系统设定的标准方式搜索 C.仅仅搜索源程序所在目录 D.仅仅搜索所在的当前目录 2.以下叙述中不正确的是()。 #defineIBM-PC A.预处理命令行都必须以#号开始 B.在程序中凡是以#号开始都是预处理命令行 C.C程序在执行过程中对预处理命令行进行处理 D.以上定义是正确的宏定义 3.以下叙述中正确的是()。 #defineCR37.688 A.在程序的一行上可以出现多个预处理命令行 B.预处理行是C的合法语句 C.被包含的文件不一定以.h作为后缀 D.在以上定义中CR是称为“宏名”的标识符 4.以下有关宏替换的叙述中不正确的是()。 A.宏替换不占用运行时间B.宏名无类型 C.宏替换只是字符替换
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题集