C语言复习题 c程序设计教程 有答案.docx
- 文档编号:3475301
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:20
- 大小:30.07KB
C语言复习题 c程序设计教程 有答案.docx
《C语言复习题 c程序设计教程 有答案.docx》由会员分享,可在线阅读,更多相关《C语言复习题 c程序设计教程 有答案.docx(20页珍藏版)》请在冰豆网上搜索。
C语言复习题c程序设计教程有答案
一、填空题(每小题2分,共16分)
1.在C语言中,输入操作是由库函数scanf完成的,输出函数是由库函数printf完成的。
2.执行下列语句后,a的值是-264inta=12;a+=a-=a*a;
3.C语言中的每条基本语句以 ; 作为结束符,每条复合语句以 } 作为结束符。
4.下面的程序段中循环体的执行次数是3。
a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);
5.假定a为一个整型数组名,则元素a[4]的字节地址为 a+16 。
6.已知inta[2][3]={3,2,1};则表达式“a[0][0]/a[0][1]/a[0][2]”的值是1。
7.调用函数有返回值时,应在函数的返回值类型之前增加关键字return。
如果一个函数无返回值,定义它时函数类型应是void。
8.设inta=1,b=2.c=3,d;执行d=!
(a十b十c)后,d的结果是0
9.若用数组名作为函数调用时的实参,则实际上传递给形参的是数组首元素的地址。
10.设x为int型变量,请写出一个关系表达式 (x%3==0)&&(x%7==0) ,用以判断x同时为3和7的倍数时,关系表达式的值为真。
11.表达式(int)((double)(5/2)+2.5)的值是4
12.若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf("x/y=%d",x/y);补充完整,使其输出的计算结果形式为:
x/y=11
13.数组与函数参数联系密切,当用数组元素作函数参数时,这时属于值传递;当数组名作参数时,这时属于地址传递,对形参的改变可影响到实参。
14.算术表达式5x+8xy/8-xy对应的C表达式为__5*x+8*x*y/8-x*y___________________________
15.逗号表达式(x=4*5,x*5),x+25的值为___45______
16.inti=1,j=2;则表达式++i+j的值为____4_____
17.用关系表达式或逻辑表达式表示条件:
年份Year能被4整除,但不能被100整除或者能被400整除____(year%4==0&&year%100!
=0)||year%400==0___
18.一个c程序有且仅有一个main()函数。
19.C程序的基本单位是函数。
20.C语言中的标识符只能由三种字符组成,它们是字母,数字和下划线。
21.若有定义:
intb=7;floata=2.5,c=4.7;则下面表达式的值为5.500000。
a+(int)(b/3*(int)(a+c)/2)%4
22.若有定义:
inta=2,b=3;floatx=3.5,y=2.5;则下面表达式的值为3.500000。
(float)(a+b)/2+(int)x%(int)y
23.设inta=1,b=2,c,d,e;执行c=(一a十十)十(十十b)
d=(b一一)+(十十a)一a;
e=(a/(十十b))一(b/(一一a));
后,变量a、b、c、d、e的结果分别是【2】【3】【2】【3】【0】
24.假设变量x,为整形变量,则执行下面语句后x的直为-14.
x=7;x+=x-=x+x;
25.以下程序的执行结果是c=k。
#include
main()
{charc='A'+10;
printf("c='%c\n",c);}
二、选择题(每题2分,共30分)
(1)若x,y均定义为int型,z定义为double型,以下不合法的scanf函数调用语句是(D).
A)scanf(“%d%d1x,%1e”,&x,&y,&z);
B)scanf(“%2d*%d%1f”,&x,&y,&z);
C)scanf(“%x%*d%o”,&x,&Y);
D)scanf(“%x%o%6.2f”,&x,&y,&z);
(2)以下关于C语言的叙述中正确的是(B)
A)C语言中的注释不可以夹在变量名或关键字的中间
B)C语言中的变量可以在使用之前的任何位置进行定义
C)在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致
D)C语言的数值常量中夹带空格不影响常量值的正确表示
(3)以下C语言用户标识符中,不合法的是(D)
A)_1
B)AaBc
C)a_b
D)a-b
(4)若有定义:
doublea=22;inti=0,k=18;,则不符合C语言规定的赋值语句是(C)
A)a=a++,i++;
B)i=(a+k)<=(i+k);C)i=a%11;
D)i=!
a;
(5)有以下程序
#include
main()
{chara,b,c,d;
scanf(“%c%c”,&a,&b);
c=getchar();d=getchar();
printf(“%c%c%c%c\n”,a,b,c,d);}
当执行程序时,按下列方式输入数据(从第1列开始,
回车也是一个字符)(C)
12
则输出结果是
A)1234
B)12
C)123
D)1234
(6)若a是数值类型,则逻辑表达式(a==1)||(a!
=1)的值是(A)
A)1
B)0
C)2
D)不知道a的值,不能确定
(7)以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是(B)
A)switch(a)
{case:
a=b;break;
default:
a++;}
B)switch(a==1)
{case0:
a=b;break;
case1:
a++;}
C)switch(a)
{default:
a++;break;
case1:
a=b;}
D)switch(a==1)
{case1:
a=b;break;
case0:
a++;}
(8)有如下嵌套的if语句
if(a
if(a elsek=c; else if(b elsek=c; 以下选项中与上述if语句等价的语句是(C) A)k=(a<b)? a: b;k=(b<c)? b: c; B)k=(a<b)? ((b<c)? a: b): ((b>c)? b: c); C)k=(a<b)? ((a<c)? a: c): ((b<c)? b: c); D)k=(a<b)? a: b;k=(a<c)? a: c; (9)有以下程序 #include<stdio.h> main() {ini,j,m=1; for(i=1;i<3;i++) {for(j=3;j>O;j--) {if(i*j)>3)break; m=i*j;}} printf("m=%d\n",m);} 程序运行后的输出结果是(A) A)m=6 B)m=2 C)m=4 D)m=5 (10)一个c程序的执行是从(A). A.main()函数开始,直到main()函数结束 B.第一个函数开始,直到最后一个函数结束 C.第一个语句开始,直到最后一个语句结束 D.main()函数开始,直到最后一个函数结束 (11)有以下程序,其中k的初值为八进制数 #include main() {intk=011; printf("%d\n",k++); } 程序运行后的输出结果是(D) A)12 B)11 C)10 D)9 (12)一个C语言程序是由(B)。 A)一个主程序和若干子程序组成 B)函数组成 C)若干过程组成 D)若干子程序组成 (13)以下关于return语句的叙述中正确的是(B) A)一个自定义函数中必须有一条return语句 B)一个自定义函数中可以根据不同情况设置多条return语句 C)定义成void类型的函数中可以有带返回值的return语句 D)没有return语句的自定义函数在执行结束时不能返回到调用处 (14)下列选项中,能正确定义数组的语句是D A)intnum[0..2008]; B)intnum[]; C)intN=2008; intnum[N]; D)#defineN2008intnum[N]; (15)设charch;以下正确的赋值语句是(B). A.ch='123';B.ch=\xff'; C.ch='\08’;D.ch="\”; (16)若有代数式3ae/bc,则不正确的C语言表达式是(C) A)a/b/c*e*3B)3*a*e/b/c C)3*a*e/b*cD)a*e/c/b*3 (17)设有定义doublea[10],*s=a;,以下能够代表数组元素a[3]的是B A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3 (18)以下正确的叙述是(D). A)在C程序中,每行中只能写一条语句 B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数 C)在C程序中,无论是正数还是实数,都能被准确无误的表示 D)在C程序中,%是只能用于正数运算的运算符 (19)】在C语言中,要求运算数必须是整形的运算符是(D). A)/B)++C)! =D)% (20)设intn=3;则n十十的结果是(B),n的结果是(C)。 A)2B)3C)4D)5 (21)设有定义: intx=2;,以下表达式中,值不为6的是(D) A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2 (22)若有以下定义 intx[10],*pt=x; 则对x数组元素的正确应用是(B) A)*&x[10]B)*(x+3)C)*(pt+10)D)pt+3 (23)设有说明: charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型为(D)。 A)floatB)charC)itnD)double. (24)已有定义intx;floaty;且执行scanf(“%3d%3f”,&x,&y);语句时从第一列开始输入数据12345︼678<回车>,则x的值为(B),y的值为(B)。 (注: ︼表示空格) 【1】A)12345B)123C)45D)345 【2】A)无定植B)45.000000C)678.000000D)123.000000 (25)已有如定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的数据输入方式是(D)。 (注: inta1,a2;charc1,c2; scanf(“%d%d”,&a1,&a2); scanf(“%c%c”,&c1,%c2); A)1020AB C)10︼︼20︼︼AB (26)根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为(A). main() {charch1,ch2,ch3; 输入语句 printf(“%c%c%c”,&ch1,&ch2,&ch3);} 输入形式: ABC 输出形式: AB scanf(“%c%c%c”,&ch1,&ch2,&ch3); scanf(“%c,%c,%c”,&ch1,&ch2,&ch3); scabf(“%c%c%c”,&ch1,&ch2.&ch3); scanf(“%c%c”,&ch1,&ch2,&ch3); (27)设X,Y均为FLOAT变量,则以下不合法的赋值语句是(B) A)++x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10; (28)】有如下程序,对应正确的数据输入是(A)。 #include main() {floata,b; scanf("%f%f",&a,&b); printf("a=%f,b=%f\n",a,b);} A.2.04 B.2.01,5.67 C.A=2.04,B=5.67 D.2.045.67 (29)巳知字母A的ASCII码是65,以下程序的执行结果是(D)。 #include main() {charc1='A',C2='Y'; printf("%d,%d\n",c1,c2); A.A,YB.65,65C.65,90D.65,89 (30)以下程序的执行结果是(B). #include {inti=010,j=10; printf("%d,%d\n",++i,j--);} A.11,10B.9,10C.010,9D.10,9 (31)为了避免嵌套的if-else语句的二义性,c语言规定else总是与(C)组成配对关系。 A)缩排位置相同的if B)在其之前末配对的if C)在其之前未配对的最近的if D)同一行上的if (32)当a=1,b=3,c=5,d=4时,执行完下面一段程序后x的值是(B). if(a if(c else
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言复习题 c程序设计教程 有答案 语言 复习题 程序设计 教程 答案