当前位置:首页 >> 电子/电路 >>

C语言训练题


C语言训练题
1、表达式:(int)((double)9/2)- 9%2 的值是 A) 0 B) 3 C) 4 D) 5

参考答案:B
【解析】 先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5, 然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项? 2、若变量已正确定义,在if (W) printf("%d\n" ,k ); 中,以下不可替代W的是( A) a<>b+c B) ch=getchar() C) a==b+c D) a++ )。

参考答案:A
【解析】选项A)是非法的表达式,C语言中没有<> 运算符。
3、设有定义:int x=7,y=12;,则以下表达式值为3的是 A) (y%=x)-(x%=5) B) y%=(x%=5) C) y%=x-x%5 D) y%=(x-x%5)

参考答案:A
【解析】a%=b表示a=a%(b),故A选项可改写成y=y%x,x=x%5,再计算y-x计算的结果为3,满足 题意,因此答案为A选项。 4、若有定义语句:int x=10; ,则表达式x-=x+x的值为(
A) 0 B) -20 C) -10 D) 10

)。

参考答案:C
【解析】算术运算符+的优先级高于-= ,且-=的结合方向为自右向左,所以表达式x-=x +x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C)。 5、有以下程序 #include <stdio.h> main() { int sum, pad, pAd; sum = pad = 5; pAd = ++sum, pAd++, ++pad; printf("%d\n", pad ); } 程序的输出结果是
A) 5 B) 6

C) 7 D) 8

参考答案:B
【解析】C语言区分大小写,pad与pAd是两个不同的变量?首先将5赋值给两个变量,由于赋值运算 符的优先级高于逗号运算符,所以计算pAd=++sum,此时pAd为6,sum也为6,然后计算pAd++,pAd的 值变为7,++pad,pad的值变为6,所以选择B?
6、有以下程序 #include <stdio.h> main() { int a, b, c=241; a = c/100 % 9; b = ( -1 )&&( -1 ); printf("%d, %d\n", a, b ); } 程序运行后的输出结果是 A) 2,1 B) 6,1 C) 6,0 D) 2,0

参考答案:A
【解析】程序执行过程为:c=241,c/100=2,2%9=2,得a=2;"="优先级低于"&&",非0值为真,0 值为假,即(-1)为真,逻辑与表达式(-1)&&(-1)为真,得b=1。A选项正确。
7、已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c<d)后n的值为 A) 1 B) 0 C) 2 D) -1

参考答案:C
【解析】"="优先级低于"<"">"。"&&"逻辑与表达式:exp1&&exp2,规则为:对exp1求值,若为 0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值。本题计算过程为: 先判断a>b为假,m=0,整个逻辑表达式为假,不计算右表达式,n=2。C选项正确。
8、若有C语言表达式 2+3*4+7/3,以下选项中叙述正确的执行顺序是 A) 先执行3*4得12,再执行7/3得2.5,最后执行2+12+2.5得16.5 B) 先执行3*4得12,再执行2+12得14,再执行7/3得2,最后执行14+2得16 C) 先执行7/3得2,再执行3*4得12,再执行12+2得14,最后执行2+14得16 D) 先执行2+3得5,再执行5*4得20,再执行20+7得27,最后执行27/3得9

参考答案:B
【解析】首先,在C语言中,乘除法优先级要高于加减法,其次,除法运算符"/"两边参加运算 对象都是整数,运算结果要取整,故排除A,D选项;C语言中,因为运算符"*"和"/"都满足从左 到右的运算规则,故应先计算3*4=12因此C排除,答案为B选项。 9、若想给已定义为int型的变量a、b、c、d赋整数1,以下选项中错误的语句是
A) d=c, c=b, b=a, a=1; B) d=c=b=a=1; C) d=(b=c=(a=1)); D) d=1, c=d, b=c, a=b;

参考答案:A
【解析】赋值是将一个常量的值赋给一个变量,在A选项中,c初始值未定义,相当于一个未知

数给变量d赋值,不满足赋值为1的条件,答案选A;B选项中, d=c=b=a=1因为赋值运算符号具有 右结合性质,故可理解为d=(b=c=(a=1))。
10、若变量已正确定义,以下选项中非法的表达式是 A) a!=4||'b' B) 'a'=1/2*(x=y=20,x*3) C) 'a' % 4 D) 'A' + 32

参考答案:B
【解析】A选项中'a'即表示a为字符常量,再给'a'赋值1/2*(x=y=20,x*3),是不正确的。因此B选项 正确。
11、有以下程序 #include <stdio.h> main() { int a; a = (int)(-1.53*3); printf("%d\n", a); } 程序的运行结果是 A) -4 B) -3 C) -5 D) 结果不确定

参考答案:A
【解析】-1.53*3=-4.59,执行语句a=(int) (-1.53*3) ;强制将浮点数-4.59转换成整型为-4, 则a=-4,A选项正确。
12、有以下程序 #include <stdio.h> main() { int a; a = (int)1.99*3; printf("%d\n", a); } 程序的运行结果是 A) 3 B) 5 C) 6 D) 结果不确定

参考答案:A
【解析】浮点数1.99被强制转换成1,执行语句a=(int)1.99*3;计算得a=1*3=3,A选项正确。 13、若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是 A) x+1=y B) ++x,y=x-C) x=x+10=x+y D) double(x)/10

参考答案:B
【解析】A选项中不能将变量y赋给表达式,C选项中错误与A选项一样,D选项中强制类型转换表达 式应写成(double)x/10?

14、设有定义:int A) 2*x,x+=2 B) x++,2*x C) x*=(1+x) D) x*=x+1

x=2; ,以下表达式中,值不为6的是(

)。

参考答案:A

15、若有以下程序 #include <stdio.h> main() { int a=0,b=0,c=0; c= (a -= ++a), (a+=b, b+=4); printf("%d,%d,%d\n",a,b,c); } 则程序的输出结果是 A) 0,4,0 B) 0,4,4 C) 1,4,1 D) 1,4,4

参考答案:A
【解析】逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。且逗号运算符的 优先级最低,所以先计算c=(a-=++a)这部分。其中,赋值运算符从右往左计算,先执行++a,a自增1 后再赋值,所以a的值为1,执行a=a-1,即a=1-1,a的值为0,并将0赋给变量c?第二部分(a+=b,b+=4),先 执行a=a+b,a=0+0,即a的值为0,然后执行b+=4,b=0+4,即b的值为4?所以打印结果为0,4,0,选择A选 项?
16、设有定义:int x=11,y=12,z=0;,以下表达式值不等于12的是 A) (z,x,y) B) (z=x,y) C) z=(x,y) D) z=(x==y)

参考答案:D
【解析】逗号表达式的计算过程是从左到右逐个求每个表达式的值,取最右边一个表达式的 值作为该逗号表达式的值。赋值运算结合性为由右向左结合,赋值运算符左值为变量,右值为 变量或常量,且左右两边数据类型相同才能实现赋值。成功实现赋值后以左值为返回值。逻辑 表达式成立则返回1,不成立返回0。A选项逻辑表达式x==y不成立,则z=0,表达式值为0。B选

项中逗号表达式x,y取y值为表达式值, 然后赋值给z=12, 表达式值为12。 C选项逗号表达式(x,y) 取y值为表达式值,然后赋值给z=12,表达式值为12。D选项逗号表达式(z,x,y)取y值为表达式 值12。选择D选项。 17、有以下程序: #include <stdio.h> main() { int x, y, z; x=y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); } 程序运行后的输出结果是( )。 A) 2,3,3 B) 2,3,2 C) 2,3,1 D) 2,2,1

参考答案:C
【解析】z=x++,y++,++y;因为赋值运算符的优先级高于逗号运算符的优先级, 所以可以将上式表示成(z=x++),(y++),(++y)。然后从左向右先计算表达式z=x++, 因为x++先使用后自增,所以z的值为1,x的值为2。再计算逗号表达式第二个表达式y++, 此时y的值为2,最后计算第三个表达式++y,y的值为3。 18、设有定义: int a=1,b=2,c=3; 以下语句中执行效果与其它三个不同的是 A) if(a>b) {c=b,a=b,b=c;} B) if(a>b) {c=a,a=b,b=c;} C) if(a>b) c=a;a=b;b=c; D) if(a>b) {c=a;a=b;b=a;}

参考答案:C 【解析】由于a小于b ,所以所有选项中的条件都为假,A选项中实际执行了a=b;b=c;两个操作?
而B,C,D选项由于条件不成立,所以什么也没有做,所以选择C选项? 19、若有定义语句: int x=12, y=8, z; 在其后执行语句 z= 0.9+x/y; 则z的值为 A) 1 B) 1.9 C) 2 D) 2.4

参考答案:A
【解析】先计算x/y,结果为1,然后计算0.9+1,结果为1.9,但由于变量z为整型,所以取值1,所以z 的值为1? 20、表达式3.6-5/2+1.2+5%2的值是

A) B) C) D)

4.3 4.8 3.3 3.8

参考答案:D
【解析】 计算5/2,结果取整数值2。 计算3.6-2, 结果与高精度数据保持一致, 即为1.6。 计算1.6+1.2, 结果为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项? 21、表达式:(int)((double)9/2)- 9%2 的值是 A) 0 B) 3 C) 4 D) 5

参考答案:B
【解析】 先将整型数据9强制转换成double型,然后除以2得到的结果与double型保持一致,即为4.5, 然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项? 22、设变量已正确定义并赋值,以下正确的表达式是( A) x=y+z+5, ++y B) int(15.8%5) C) x=y*5=x+z D) x=25%5.0 )。

参考答案:A
【解析】B)与D)选项中取模运算符%的左右两个操作数均应为整数,所以B)、D)错误。C) 选项中不能将x+y的值赋给表达式y*5,所以C)错误。 23、语言程序中,运算对象必须是整型数的运算符是 A) && B) / C) % D) *

参考答案:C
【解析】%取余运算是二目运算符,且要求运算对象必须为整数,所以选C? 24、以下不能用于实型数据的运算符是 A) % B) / C) * D) +

参考答案:A
【解析】"%"符号两边必须是整数,因此答案选A。 ,则不符合C语言规定的赋值语句是( 25、若有定义:double a=22;int i=0,k=18;
A) i=(a+k)<=(i+k); B) i=a%11; D) i=!a; C) a=a++,i++

)

参考答案:B

【解析】取模运算符"%",二元运算符,具有左结合性,参与运算的量均为整型。选项 B 中的a变量是double实型,所以B)不符合规定。 26、设有定义:int A) (y%=x)-(x%=5) B) y%=(x%=5) C) y%=x-x%5 D) y%=(x-x%5) x=7,y=12;,则以下表达式值为3的是

参考答案:A
【解析】a%=b表示a=a%(b),故A选项可改写成y=y%x,x=x%5,再计算y-x计算的结果为3,满足 题意,因此答案为A选项。
27、若有定义语句:int a=12;,则执行语句:a+= a-= a*a;后,a的值是 A) -264 B) 552 C) 144 D) 264

参考答案:A
【解析】赋值运算结合性为自右向左,a+=a-=a*a相当于a=a-a*a,a=a+a;自右向左计算过程为 a=a-a*a=-132,a=a+a=-264,A选项正确。 28、设有定义: int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是 A) ++k B) k+=1 C) k++ D) k+1

参考答案:C
【解析】 ++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式 的值为0,而其他三个表达式的值均为1,所以选择C? 29、若变量均已正确定义并赋值,以下合法的C语言赋值语句是 A) x=y==5; B) x=n%2.5; C) x+n=i; D) x=5=4+1;

参考答案:A
【解析】B选项中运算符"%"的前后必须为整数,C选项中不能将变量赋给表达式x+n,D选项中不能 将表达式4+1赋给常量5? 30、表达式 a+=a -= a=9 的值是 A) 18 B) -9 C) 0 D) 9

参考答案:C
【解析】首先计算a=9,然后计算a-=9,即a=a-9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0?

31、若有定义语句:int
A) 0 B) -20 C) -10 D) 10

x=10; ,则表达式x-=x+x的值为(

)。

参考答案:C
【解析】算术运算符+的优先级高于-= ,且-=的结合方向为自右向左,所以表达式x-=x +x可以表示成x=x-(x+x)=10-(10+10)=-10,选择C)。 32、以下选项中,与n=i++ 完全等价的表达式是
A) B) C) D) n=i,i=i+1 n+=i+1 i=i+1,n=i n=++i

参考答案:A
【解析】运算符"++"放在变量后面时,表示变量先参与其他操作,再完成加1,故表达式n=i++ 运算顺序是先将i赋值给n,再将i+1赋值给i,因此答案为A选项。 33、变量c的值不为2、4、6时,值为"真"的表达式是 A) (c>=2 && c<=6)&&(c%2!=1) B) (c==2)||(c==4)||(c==6) C) (c>=2 && c<=6)&& !(c%2) D) (c>=2 && c<=6) || (c!=3) || (c!=5)

参考答案:D
【解析】逻辑或表达式中有一个值不为0,结果即为真,逻辑与表达式中只有两个运算对象均非零, 结果才为真?所以只有选项D满足要求? 34、下列关系表达式中,结果为"假"的是 A) 3 <= 4 B) (3 < 4) == 1 C) (3 + 4) > 6 D) (3 != 4) > 2

参考答案:D
【解析】B选项中,关系表达式(3<4)==1即1==1,结果为真; C选项中,(3+4)>6即7>6,结果为真; A选项中,3<=4结果为真。D选项中,(3!=4)>2即1>2,结果为假。因此D选项正确。 35、与数学表达式x≥y≥z对应的C语言表达式是 A) (x>=y)||(y>=x) B) (x>=y>=z) C) (x>=y)!(y>=z) D) (x>=y)&&(y>=z)

参考答案:D
【解析】本题考察关系表达式和逻辑表达式,y大于等于x同时y小于等于z,因此x<=y和y<=z是逻 辑与的关系。因此D选项正确。 36、若a是数值类型,则逻辑表达式 (a==1)||(a!=1)的值是 A) 1 B) 0

C) 2 D) 不知道a的值,不能确定

参考答案:A 【解析】逻辑或"||"要求只要两边的运算对象有一个非零,结果就为真,虽然不知道a的值,但是
若a为1,则左边运算对象为1,若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零, 所以结果为真,即1? 37、若变量已正确定义 for( x=0,y=0; ( y!=99 && x<4 ); x++ ) 则以上for循环 A) 执行3次 B) 执行4次 C) 执行无限次 D) 执行次数不定

参考答案:B
【解析】本题重点考察for语句的循环次数,for(x=0,y=0;(y!=99&&x<4);x++),y!=99&&x<4即循环 条件当y不等于99以及x<4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4 次,B选项正确。 38、已知a=5,b=6,c=7,d=8,m=2,n=2,执行(m=a>b)&&(n=c<d)后n的值为
A) B) C) D) 1 0 2 -1

参考答案:C
【解析】"="优先级低于"<"">"。"&&"逻辑与表达式:exp1&&exp2,规则为:对exp1求值,若为 0,则表达式为0,且不计算exp2;若exp1非0,则求exp2值,作为表达式值。本题计算过程为: 先判断a>b为假,m=0,整个逻辑表达式为假,不计算右表达式,n=2。C选项正确。 39、以下不能输出小写字母a的选项是
A) B) C) D) printf("%c\n","a"); printf("%c\n",'A'+32); putchar(97); putchar('a');

参考答案:A
【解析】字符是按照其ASCII形式存储的,其值不能超过范围0~255,否则不是合法的字符。 printf函数格式控制符%c以字符形式输出数据。putchar函数将括号中参数以字符形式输出。A 选项"a"为字符串,不是单个字符,输出格式不正确,不能输出a,选择A选项。字符'a'的ASCII 码为97,字符'A'的ASCII码为65。'A'+32即为'a',故B选项能输出a。C、D选项putchar函数参 数均为字符'a',均可正确输出a。 40、表达式3.6-5/2+1.2+5%2的值是 A) 4.3 B) 4.8 C) 3.3 D) 3.8 【解析】 计算5/2,结果取整数值2。 计算3.6-2, 结果与高精度数据保持一致, 即为1.6。 计算1.6+1.2,

结果为2.8。计算5%2,结果为1。计算2.8+1结果为3.8。所以选择D选项?


相关文章:
C语言编程练习题绝对经典!
C语言编程练习题绝对经典!_IT认证_资格考试/认证_教育专区。C语言编程练习 ? 马克思手稿中有一道趣味数学题:有 30 个人,其中有男人、女人和小孩,在一家饭馆里...
C语言练习题
C语言练习题_IT认证_资格考试/认证_教育专区。选择题 1-1、以下选项中,能用作数据常量的是___A、1010 1-2、以下叙述中正确的是___ D、C 语言程序中所有...
C语言上机练习题及答案
C语言上机练习题及答案_IT认证_资格考试/认证_教育专区。1 输入三个整数 x,y...比较两个数大小的题 #include<stdio.h> void main() { int a,b; scanf(...
函数练习题(C语言)带答案
函数练习题(C语言)带答案_其它_高等教育_教育专区。今日推荐 88...C语言练习题-填空题(带答... 95页 2下载券喜欢此文档的还喜欢 ...
c语言练习题
c语言练习题 暂无评价|0人阅读|0次下载|举报文档 模拟试题一一、 选择题(本大题 30 分,每小题 2 分) D 。 A) main 函数必须放在 C 程序的开头 B) mai...
C语言试卷及答案
C语言试卷及答案_IT认证_资格考试/认证_教育专区。有用《C 语言程序设计》考试...c语言试题 暂无评价 5页 1下载券 C语言考试复习专用三套题... 14页 免费 ...
C语言经典编程练习题和答案详解入门必备
C语言经典编程练习题和答案详解入门必备_工学_高等教育_教育专区。C语言经典编程...} { { { 经典 c 程序 100 例==21--30 【程序 21】 题目:猴子吃桃问题...
C语言练习题
C语言练习题_IT认证_资格考试/认证_教育专区。C 语言基础一: 1.下列四组选项中,均不是 C 语言关健字的选项是( A,D )。 A) define B) gect C) ...
C语言各章节练习题(含答案)
C语言各章节练习题(含答案)_电脑基础知识_IT/计算机_专业资料。一、 C 语言...(p+1) );} a)3 b)4 c)1 d)2 二、填空题 5 .若有定义 :int a[...
C语言基础知识测试题 全面完整
C语言基础知识测试题 全面完整_其它考试_资格考试/认证_教育专区。基础知识测试题 一.单项选择题 1.以下不正确的C语言标识符是(D ) A. ABC B. abc B. a+...
更多相关标签: