C语言习题2an.docx
- 文档编号:28537092
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:15
- 大小:76.44KB
C语言习题2an.docx
《C语言习题2an.docx》由会员分享,可在线阅读,更多相关《C语言习题2an.docx(15页珍藏版)》请在冰豆网上搜索。
C语言习题2an
一、选择题
1.一个C程序的执行是从A。
A)本程序的main函数开始,到main函数结束
B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
C)本程序文件的第一个函数开始,到本程序main函数结束
D)本程序的main函数开始,到本程序文件的最后一个函数结束
【解析】:
C源程序的组成单位是函数。
C源程序由一个且仅有一个主函数(main)和若干个子函数组成。
一个C程序从main函数开始执行,到main函数体执行完结束,与main函数在整个程序中的位置无关。
并且main函数在程序中的位置是任意的。
2.以下叙述不正确的是D。
A)一个C源程序必须包含一个main函数B)一个C源程序可由一个或多个函数组成
C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面
【解析】:
注释是对程序的说明,可出现在程序中任意合适的位置,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。
在VC环境下也可以用“//”作为注释的开始,但注释需在一行结束。
3.下列一组运算符中,优先级最高的运算符是_____D。
A.<=B.=C.%D.++
【解析】C语言中运算符的优先级按则高到低的顺序可大致归纳为:
初等运算符(如()、[]、·等)优先于单目运算符优先于算术运算符优先于关系运算符优先于逻辑运算符(除逻辑非!
运算符)优先于条件运算符优先于赋值运算符优先于逗号运算符。
答案:
D。
4.以下叙述中合法的实型常量是B
(A)2.0*10(B).914(C)0(D)3.13e-2.1
5.以下叙述中正确的是B
(A)若有inta=4,b=9;执行了a=b;b=a;之后,a的值为9,b的值为4
(B)在赋值表达式中,赋值号的右边可以是变量,也可以是表达式
(C)若有inta=4,b=9;执行了a=b后,a的值已由原值改变为b的值,b的值变为0
(D)a是实型变量,a=10在C语言中是允许的,因此可以说:
实型变量中可以存放整型数
【解析】a是实型变量,a=10,赋值表达式的赋值过程是将先整数10转换为实型,再将其赋组实型变量a。
6.以下定义语句中正确的是C
(A)inta=b=0;(B)longint=65,b;
(C)floata=1,b=1.0;(D)doublea=1,000,b=1.1;
【解析】选项A,应改为:
inta=0,b=0;选项B中int不能作为合法变量。
选项D中变量a的赋值错误。
7.若有条件表达式(exp)?
a++:
b--,则以下表达式中能完全等价于表达式(exp)的是B
A)(exp==0)B)(exp!
=0)C)(exp==1)D)(exp!
=1)
【解析】条件表达式的结果有两类,一是0值,另一是非0值。
所以exp等价于exp!
=0或等价于!
(exp==0)。
8.若变量已正确定义,有以下程序段B
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!
=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是
A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7
【解析】:
程序结构:
程序执行时语句c=a;为第1条if的后继语句。
9.以下4个选项中,不能看作一条语句的是D
A);B)a=5,b=2.5,c=3.6;C)if(a<5)a++;D)if(b!
=5)x=2;y=6;
【解析】:
C语言以“;”作为一条语句。
单独的分号“;”也算一条语句。
一行内可写多条语句,一条语句也可写在多行上。
选项D是两条语句。
10.设有:
inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值是B
A)1B)2C)3D)4
【解析】逻辑与&&和逻辑或||的计算规则:
&&前为假&&后不做,||前为真||后一律不做。
11.以下叙述不正确的是D。
A)在C程序中,逗号运算符的优先级最低
B)在C程序中,MAX和max是两个不同的变量
C)若a和b类型相同,在计算了赋值表达式a=b后,b中的值将放入a中,而b中的值不变
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值
【解析】对整数可以精确表示,但对实数不能精确表示,而实数只能近似表示。
对整型变量可以输入实数,输入实数时将取整后赋予整型变量,对实型变量也可以输入整数,输入后自动类型转换。
12.以下叙述正确的是B。
A)在C程序中,每行只能写一条语句
B)C语言本身没有输入输出语句
C)在对一个C程序进行编译的过程中,可发现注释中的拼写错误
D)在C程序中,无论是整数还是实数,都能被准确无误地表示
13.下列程序的运行结果是D
#include
main()
{intx=-9,y=5,z=8;
if(x if(y<0)z=0; elsez+=1; printf("%d\n",z);} A)6B)7C)8D)9 【解析】执行过程: 若x 14.以下程序的运行结果是B。 #include main() {inta,b,d=241; a=d/100%9; b=(-1)&&(-1); printf(“%d,%d”,a,b); } A)6,1B)2,1C)6,0D)2,0 【解析】表达式(-1)&&(-1)的计算规则是,观察其值是非零值,还是零值,非零值为真,零值为假,逻辑与&&,若参与运算的两操作数都是真,其结果必为真,其中有一为假,则其值必为假。 所以表达式(-1)&&(-1)的值为真值。 若表达式为真值,则返回值为1,否则返回值为0。 则表达式(-1)&&(-1)的为1,所以b的值为1。 15.设a=3,b=4,c=5,则逻辑表达式! (a+b)+c-1&&b+c/2的值是: A A)1B)10.5C)0D)−1 【解析】: 计算原则同上,则! (a+b)的值为0,0+c-1的值为1,b+c/2的值为1,所以最后表达式的值为1. 16.阅读以下程序 #include main() {intelse; floatprintF; printf("请输入2个数: "); scanf("%d%f",&else,&printF); printf("%d%f\n",else,printF); } 该程序编译时产生错误,其出错原因是A A.定义语句出错,else是关键字,不能用作用户自定义标识符 B.定义语句出错,printF不能用作用户自定义标识符 C.定义语句无错,scanf不能作为输入函数使用 D.定义语句无错,printf不能输出else的值 【解析】C语言的关键字不能用作用户自定义标识符。 else为关键字。 17.有以下程序 #include main() {intk=10; printf("%4d,%o,%x\n",k,k,k); } 程序的运行结果是(□代表一个空格)___D__。 A.10,12,aB.□□10,012,aC.010,12,aD.□□10,12,a 【解析】格式控制符的含义,十进制整型%d,八进制整型%o,十六进制整型%x。 八进制数输出时不加前缀。 答案: D。 18.有以下程序,程序输出结果是_____。 #include main() {inta=0,b=0,c=0,d=0; if(a=1)b=1;c=2; elsed=3; printf("%d,%d,%d,%d\n",a,b,c,d); } A.0,1,2,0 B.0,0,0,3 C.1,1,2,0 D.编译有错 【解析】if语句每个分支后只能有一条语句或复合语句,而if(a=1)b=1;c=2;是两条语句,程序编译时会报Misplacedelseinfunctionmain错误,即在主函数中else没有if匹配。 答案: D。 19.下列程序执行后的输出结果是(小数点后只写一位)A A)666.06.0B)666.76.7 C)666.06.7D)666.76.0 #include main() {doubled;floatf;longl;inti; i=f=1=d=20/3; printf("%d%ld%f%f\n",i,l,f,d);} 【解析】: i=f=1=d=20/3该表达式自右向左运算,而20/3是整除整必得整。 20.若有以下定义: chara,intb,floatc,doubled,则表达式a*b+d-c值的类型为: D A)floatB)intC)charD)double 【解析】表达式的数据类型由参与操作数的最高数据类型决定,但变量的数据类型一但说明,就已确定。 21.若有以下定义: chara;intb;floatc;doubled;c=*b+d-c,则c的类型为: A A)floatB)intC)charD)double 22.表达式“10! =9”的值是: D A)trueB)非零值C)0D)1 23.设a,b,c都是int型变量,且a=3,b=-4,c=5,则下面表达式中值为0的是: B A)a&&bB)a<=bC)a||b+c&&b-cD)(a c||1 24.在执行下述程序时,若从键盘输入8和6,则结果为C #include main() {inta,b,s; scanf("%d%d",&a,&b); s=a; if(a printf("%d",s);} A)8B)48C)64D)36 【解析】执行过程: 当条件表达式a 25.若执行下面的程序时,则输出结果是A #include main() {inta=6,b=2,k; k=a; if(a if(k%2! =0)if(! b)k++; elsek=b%a; printf("%d\n",k);} A)6B)2C)7D)0 【解析】程序结构分析: 26.以下选项中,当x为大于1的奇数时,值为0的表达式是D A)x%2==1B)x/2C)x%2! =0D)x%2==0 27.有如下程序D #include main() {intn=789; while(n>0) {n/=10;printf("%d",n);}} 该程序的输出结果是 A)987B)870C)787D)7870 28.为表示关系x≥y≥z,应使用的C语言表达式是_____。 A.(x>=y)&&(y>=z)B.(x>=y)AND(y>=z) C.(x>=y>=z)D.(x>=y)&(y>=z) 【解析】数学中不等式的传递性不能在C语言中直接使用,如果直接使用,计算机会按优先级的结合性自左向右运算,不能实现大小关系的判断,所以必须写成(x>=y)&&(y>=z)。 答案: A。 29.能正确表示a和b同时为正或同时为负的逻辑表达式是_____。 A.(a>=0||b>=0)&&(a<0||b<0)B.(a>=0&&b>=0)&&(a<0&&b<0) C.(a+b>0)&&(a+b<=0)D.a*b>0 【解析】选项A中(a>=0||b>=0)若a>=0成立,则不再考虑其后的条件,即b为任意数该表达式的返回值都为真。 表达式(a<0||b<0)同理,选项B是逻辑与表达式,一个数不可能即是正数又是负数。 选项C表达式a+b>0不能表示a与b同时为正,同样a+b<=0也不能说明a与b同时为负。 答案: D。 30.有以下程序 #include main() {inty=10; while(y--); printf("y=%d\n",y); } 程序执行后的输出结果是_______。 A.y=0 B.y=-1 C.y=1 D.while构成无限循环 【解析】循环语句while(y--);循环体只有一条语句,即“;”分号。 循环条件为y--,当条件表达式0时,循环退出,即条件表达式y--的值为0时循环退出,而此时y为-1。 答案: B。 31.有以下程序。 #include main() {inti,s=1; for(i=1;i<50;i++) if(! (i%5)&&! (i%3))s+=i; printf("%d\n",s); } 程序的输出结果是_______。 A.409B.277C.1D.91 【解析】循环语句读程时的要点,1)循环退出的条件或循环的次数。 2)循环体完成的功能。 本题循环体的主体是s+=i,即求1到50的和,题中if语句括号中的条件表达式! (i%5)&&! (i%3)表明只有能同时被5和3整除的数才符合相加的条件,1~49之间满足这个条件的只有15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。 答案: D。 32.若有定义intt=0;循环语句while(t=1){...},则以下叙述正确的是_______。 A.循环控制表达式的值为0B.循环控制表达式的值为1 C.循环控制表达式不合法D.以上说法都不对 【解析】循环条件表达式t=1是赋值表达式,每次循环都将t赋值为1,所以循环条件表达式的值恒为1。 要点,正确区别t=1与t==1,前者是赋值表达式,后者是关系表达式,判断t是否等于1时。 答案: B。 33.有以下程序 #include main() {intsum=0,x=5; do{sum+=x;} while(! --x); printf("%d\n",sum); } 程序的运行结果是_______。 B A.0B.5C.14D.15 【解析】本程序的关键是,循环语句中的条件表达式! --x的值,x的原值为5,--x的值为4(非零值)取逻辑非,即为0,当循环条件表达式的值为0时,退出循环。 34.与do…while(E)中E不等价的表达式是_______。 A.! E==0B.E>0||E<0C.E==0D.E! =0 【解析】循环条件E应为非零值。 答案: C。 35.在while语句中,while后的括号内的表达式为_______结束循环 A.0B.1C.trueD.非0 【解析】while循环语句中括号内的表达式为循环执行条件,当表达式的值为非0时,循环继续,当表达式的值为0时结束循环。 答案: A。 36.循环语句for(x=0,y=0;(y! =123)||(x<4);x++);的循环执行_______。 A.无限次B.32767C.4次D.3次 【解析】循环条件(y! =123)||(x<4),变量y的初值为0,则y! =123为真,执行循环体,该循环体只有一条空语句“;”,变量y的值不发生变化,因些循环条件永远为真。 答案: A。 37.执行语句: for(i=1;i++<4;)后;变量i的值是_______。 A.3B.4C.5D.不定 【解析】当表达式i++为4时退出循环,则变量i自增。 答案: C。 38.当执行以下程序段时_______。 A.循环体将执行一次B.循环体将执行两次 C.循环体将执行无限次D.系统将提示有语法错误 x=-1; do{x=x*x;}while(! x); 【解析】do-while语句先执行后判断,执行表达式x=x*x;变量x的值为1,则条件表达式! x的值为0。 答案: A。 39.若有以下程序 #include main() {inta=6,b=0,c=0; for(;a&&(b==0);) {b+=a;a-=c++;} printf("%d,%d,%d\n",a,b,c); } 则程序的输出结果是_______C A.5,6,0 B.6,0,0 C.6,6,1 D.5,6,1 二、阅读程序题 40.以下程序的运行结果是6。 #include main() {intm=5; if(m++>5) printf(“%d\n”,m); else; printf(“%d\n”,m--); } 41.若运行时给变量x输入12,则以下程序的运行结果是0。 #include main() {intx,y; scanf(“%d”,&x); y=x>12? x+10: x-12; printf(“%d\n”,y); } 42.有以下程序,程序运行后输出的结果是0,4,5 #include main() {inta=0,b=0,c=0; c=(a-=a-5);(a=b,b+=4); printf("%d,%d,%d\n",a,b,c); } 【解析】表达式的运算。 表达式c=(a-=a-5)为赋值表达式,首先执行a-=a-5,即a=a-(a-5),使得a的值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,c的值为5。 表达式(a=b,b+=4)为逗号表达式,从左自右依次运算,先把b的值0赋给a,然后执行b=b+4,使得b的值为4。 最后输出a,b,c的值。 43.有以下程序,程序运行后的输出结果是____。 1 #include main() {inta=1,b=0; if(-a)b++; elseif(a==0)b+=2; elseb+=3; printf("%d\n",b); } 44.有以下程序,程序运行后的输出结果是____。 0 #include main() {intx=1,y=0; if(! x)y++; elseif(x==0) if(x)y+=2; elsey+=3; printf("%d\n",y); } 【解析】程序结构与执行过程: 45.有以下程序,程序运行后的输出结果是____1,3,3 #include main() {inta=1,b=2,c=3,d=0; if(a==1&&b++==2) if(b! =2||c--! =3) printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); else printf("%d,%d,%d\n",a,b,c); } 【解析】: 逻辑表达式求值时,只有在必须执行下一个表达式时,才求解,即并不是所有的表达式都需求解。 逻辑表达式的求值规则如下: 1)对于逻辑与运算,如果第一个操作量的值为“假”,系统不再判定或求解第二操作量。 2)对于逻辑或运算,如果第一个操作量的值为“真”,系统不再判定或求解第二操作量。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 an
![提示](https://static.bdocx.com/images/bang_tan.gif)