c语言习题docWord文件下载.docx
- 文档编号:22978922
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:34
- 大小:25.65KB
c语言习题docWord文件下载.docx
《c语言习题docWord文件下载.docx》由会员分享,可在线阅读,更多相关《c语言习题docWord文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
a=%%%d,b=%%%d\n"
那么输出结果为A)。
10.以下程序的输出结果是()。
{inta,b,d=241;
a=d/100%9;
b=(-1)&
&
(-1);
%d,%d\n"
a,b);
A)6,1B)2,1C)6,0D)2,0
B)
241/100的值为2,2%9的值为2。
(-1)&
(-1)的值为1。
在逻辑运算中,非0的值为真,真“与”真结果为真,关系和逻辑运算的结果如果为真用“1”表示,如果为假用“0”表示。
11.请选出以下语句的输出结果()。
printf("
strlen("
\t\"
\065\xff\n"
));
5
函数strlen的功能是计算字符串长度。
那么字符串"
包含多少个字符呢?
\t是横向跳格字符;
\”是字符”;
\065是ASCII码值为八进制数065的字符;
\xff是ASCII码值为十六进制数0xff的字符;
\n是换行字符。
该字符串共有5个字符。
记住常用的转义字符。
12.下面程序的输出结果是()。
inti=65536;
i);
-1
因为int型变量i在C语言中是用16位补码表示的,而65535变成二进制数为111111*********1,因此i的值为111111*********1,按照带符号的十进制数%d输出-1,因为111111*********1是-1的补码。
13.若有说明和语句:
inta=5;
a++;
此处表达式a++的值是()。
5
表达式a++的值是5表达式计算后,变量a的值是6。
14.若k为int变量,则以下语句()。
k=8567;
|%-06d|\n"
,k);
|8567|
两个|原样输出,格式符%-06d说明输出变量k的值长度为6且左对齐。
15.若x为float型变量,则以下语句()。
x=213.82631;
%-4.2f\n"
,x);
213.83
16.若x为double变量,则以下语句()。
%-6.2e\n"
x);
2.14e+02
17.若ch为char型变量,k为int型变量(已知字符a的ASCII十进制代码为97),则执行下列语句
ch='
a'
;
k=12;
%x,%o,"
ch,ch,k);
k=%%d\n"
k);
输出为()。
61,141,k=%d
18.若有以下定义:
chars=’\092’;
则该语句()。
A).使s的值包含1个字符
B).定义不合法,s的值不确定
C).使s的值包含4个字符
D).使s的值包含3个字符
因为字符’\092’中的092应该是八进制数,但八进制数中不可能出现9。
19.执行以下语句后,输出结果是()。
inta=1;
%d,%d"
,a,a++);
2,1
因为C语言中函数的实参计算顺序是从右至左。
即首先计算a++,然后计算a。
20.以下程序的输出结果是()。
main()
inti=010,j=10;
++i,j--);
A)11,10B)9,10C)010,9D)10,9
B)
010是八进制数。
21.已知字母A的ASCII码为65,以下程序的输出结果是()。
#include<
main()
charc1='
A'
c2='
Y'
c1,c2);
65,89
22.以下语句
inta=110,b=017;
%x,%d\n"
,a++,++b);
输出结果是()
6e,16
110的十六进制数为6e,八进制数017加1为020,等于十进制数16。
23.以下程序
{inti=3,j=2,a,b,c;
a=(--i==j++)?
--i:
++j;
b=i++;
c=j;
%d,%d,%d\n"
,a,b,c);
}
1,1,3
24.请读程序
#include<
{
inta;
floatb,c;
scanf("
%2d%3f%4f"
&
a,&
b,&
c);
\na=%d,b=%f,c=%f"
a,b,c);
若运行时从键盘上输入9876543210<
CR>
(<
表示回车),则上面程序的输出结果是()。
a=98,b=765.000000,c=4321.000000
25.请读程序片段(字符串内没有空格字符):
AST\n012\1\\"
上面程序的输出结果是()。
9
字符串中包含9个字符,分别是AST\n012\1\\。
26.以下程序的输出结果是()
{inti=-1;
%d,%u\n"
,i,i);
-1,65535
1.判断型char变量c1是否为小写字母的正确表达式为()。
A)'
<
=c1<
='
z'
B)(c1>
=a)&
(c1<
=z)
C)('
>
=c1)||('
=c1)
D)(c1>
)&
)
2.程序的运行结果是()。
inta=1,b=2,c=3,d=4,m=2,n=2;
(m=a>
b)&
(n=c>
d);
%d"
n);
2
首先计算m=a>
b,因为关系运算符>
优先级高于赋值运算符=,a>
b的结果为假(0),赋值后m的值为0。
因为C语言计算逻辑表达式0&
d)时,已经知道结果为0,因此n=c>
d就不计算了。
N的值仍为2。
3.执行以下语句后a的值为();
b的值为()。
inta,b,c;
a=b=c=1;
++a||++b&
++c;
a的值为2;
b的值为1。
4.程序的运行结果是()。
intx=10,y=20,z=30;
if(x>
y)
z=x;
x=y;
y=z;
%d,%d,%d"
x,y,z);
20,30,30
因为if(x>
z=x;
是三条语句,即:
if(x>
y)z=x;
而不是:
{z=x;
5.程序的运行结果是()。
intm=5;
if(m++>
5)printf("
m);
elseprintf("
m--);
6
因为表达式m++>
5的值为假,m的值为6,执行语句printf("
时输出6,m的值又变为5。
6.程序的运行结果是()。
inta=100,x=10,y=20,m=5,n=0;
if(x<
if(y!
=m)
a=1;
else
if(n)a=10;
a=-1;
a);
在if嵌套中,else总是与它上面最近的if结合,因此本程序变为:
if(x<
{if(y!
if(n)a=10;
最后变量a的值为-1。
7.若有条件表达式(exp)?
a++:
b--;
则以下表达式中能完全等价于
表达式(exp)的是()
A)(exp==0)B)(exp!
=0)
C)(exp==1)d)(exp!
=1)
因为表达式(exp)的意义是:
当变量exp的值为0时表示假;
当变量exp的值为非0时表示真。
因此它与(exp!
=0)等价。
8.程序的运行结果是()。
intk=4,a=3,b=2,c=1;
k<
a?
k:
c<
b?
c:
a);
1
因为运算符?
的结合性是自右至左。
因此首先计算c<
a,结果为1,然后计算k<
1,结果仍为1。
9.已知A=7.5,B=2,C=3.6,表达式
A>
B&
C>
A||!
A<
!
B的值是()。
10.当m=2,n=1,a=1,b=2,c=3时,执行完
d=(m=a!
=b)&
(n=b>
c)后,n=(),m=()。
n=0,m=1
因为首先计算关系运算a!
=b,结果为真即1,再计算赋值运算m=1;
再计算b>
c,结果为假即0,赋值n=0;
最后d的值为假即0。
11.程序的运行结果是()。
intx,y,z;
x=1;
y=2;
z=3;
x=y--<
=x||x+y!
=z;
%d,%d"
x,y);
1,1
因为关系运算符优先级高于逻辑运算符,因此首先计算y--<
=x,结果表达式的值为假(0),y的值为1;
再计算x+y!
=z,结果为真
(1),x的值为真
(1)。
12.以下程序
{
inti=0,j=0,k=6;
if((++i>0)||(++j>0))k++;
printf(”%d,%d,%d\n”,i,j,k);
1,0,7
首先计算++i>0,结果表达式的值为真,变量i的值为1。
在计算1||(++j>0)时,因为结果为真
(1),C语言不再计算表达式(++j>0)了。
因为if()中的逻辑表达式值为真,因此计算k++,结果k值7。
13.程序的运行结果是()。
inta=2,b=7,c=5;
switch(a>
0)
{case1:
switch(b<
{case1:
@"
);
break;
case2:
"
case0:
switch(c==5)
{case0:
*"
case1:
#"
default:
?
}printf("
\n"
#&
因为表达式a>
0的值为真
(1),计算case1:
后面的语句
由于表达式b<
0的值为假(0),因此本语句执行结束。
又由于本语句后面无break语句,因此继续执行
结果输出#,由于上面的语句后面也无break语句,因此继续执行语句
输出&
。
14.下面程序的输出是()。
{inta=-1,b=4,k;
k=(a++<
=0)&
(!
(b--<
=0));
%d%d%d\n"
k,a,b);
103
关系表达式a++<
=0的值为真(即1),因为首先判断-1<
=0,然后执行a++,变量a的值为0;
关系表达式!
=0)的值为真(即1),因为首先判断4<
=0,然后执行b--,变量b的值为3,最后执行逻辑非运算!
;
逻辑表达式(a++<
=0))的值为真(即1),执行赋值运算后,变量k的值为1。
15.下面的程序片段所表示的数学函数关系是()。
y=-1;
if(x!
0)y=1;
elsey=0;
A)y=-1(x<
0)B)y=1(x<
0)C)y=0(x<
0)D)y=-1(x<
0(x=0)-1(x=0)-1(x=0)1(x=0)
1(x>
0)0(x>
0)1(x>
C)
16.下面程序的输出是()。
{intx=100,a=10,b=20,ok1=5,ok2=0;
if(a<
b)
if(b!
=15)
if(!
ok1)
x=1;
else
if(ok2)x=10;
x=-1;
printf("
%\n"
A)-1B)0C)1D)下面定的值
因为语句x=-1;
并不在if语句之中。
17.与y=(x>
0?
1:
x<
-1:
0)功能相同的if语句是()。
a)if(x>
b)if(x)
elseif(x<
0)y=-1;
elsey=0;
elsey=-1;
c)y=-1;
d)y=0;
if(x)if(x>
0)
elseif(x==0)y=0;
elsey=-1;
18.设a=6,b=-8,c=3,以下逻辑表达式的值为()。
'
d'
&&(a>b)&&(b>c)&&(a-c)
0
19.若执行下面的程序时从键盘上输入3和4,则输出是()。
{inta,b,s;
%d%d"
&
a,&
b);
s=a;
if(a<
b)s=b;
s=s*s;
s);
16
20.下面的程序
{intx=3,y=0,z=0;
if(x=y+z)printf("
****"
####"
####
21.两次运行下面的程序,如果从键盘上分别输入6和4,则输出的结果是()。
main()
{intx;
x);
if(x++>
x--);
75
22.假定所有变量均已正确说明,下列程序段运行后x值是()。
a=b=c=0;
x=35;
if(!
a)x--;
elseif(b);
if(c)x=3;
elsex=4;
4
该程序:
a=b=c=0;
if(!
23.以下两条if语句合并成一条if语句为()。
if(a<
=b)x=1;
elsey=2;
if(a>
b)printf("
****y=%d\n"
y);
elseprintf("
####x=%d\n"
=b){x=1;
else{y=2;
1.下面程序段的运行结果是()。
x=y=0;
while(x<
15)y++,x+=++y;
y,x);
8,20
y++,x+=++y;
是一个逗号表达式语句,首先计算y++,然后计算x+=++y。
#include<
intc=0;
while(c<
=2)
{c++;
c);
3.输入2473<
下面程序的运行结果是()。
intc;
while((c=getchar())!
\n'
switch(c-'
2'
putchar(c+4);
case3:
putchar(c+3);
putchar(c+2);
668977
第一次函数getchar()从键盘读取字符2,变量c的值为字符2,因此c-'
的值为0,执行case0:
后面的语句putchar(c+4);
和putchar(c+4);
执行break;
语句后,switch语句执行结束。
此次输出字符66。
4.下面程序段输出结果为()。
intx=3;
do{printf("
x-=2);
}while(!
(--x));
-2
5.不是无限循环的语句为()。
A)for(y=0,x=1;
x>
++y;
x=i++)i=x;
B)for(;
;
x++=i);
C)while
(1){x++;
D)for(i=10;
i--)sum+=i;
6.下面程序段的运行结果是()。
for(y=1;
y<
10;
)y=((x=3*y,x+1),x-1);
x=%d,y=%d"
x=15,y=14
执行完第1次循环后x=3y=2
执行完第2次循环后x=6y=5
执行完第3次循环后x=15y=14
7.程序的运行结果是()。
inta,b;
for(a=1,b=1;
a<
=100;
a++)
{if(b>
=20)break;
if(b%3==1){b+=3;
continue;
b-=5;
8
8.下面程序段不是无限循环的是()。
A)inti=100;
while
(1)
{i=i%100+1;
if(i>
100)break;
);
C)intk=0;
do{++k;
}while(k>
=0);
D)ints=36;
while(s);
--s;
i值只能是从1到100之间变化,i>
100永远是假,因此break永远也不会被执行。
for循环语句的第2个表达式没有,意味着永远为真。
每次循环k的值加1,当k的值为32767时,再执行++k,k的值变为-32768,循环结束。
因为语句—s并不在循环中,while(s);
永远执行一个空语句。
9.下面程序段()。
x=3;
do{y=x--;
y){printf("
continue;
}while(1<
=x<
=2);
A)输出##B)输出##*
C)无限循环D)含有不合法的控制表达式
第一次循环执行y=x--;
后x和y的值分别为2和3,因此输出1个#。
执行1<
=2时由于逻辑运算符<
=的结合性是从左至右,因此首先计算1<
=x,结果为真(即1),然后计算1<
=2,结果仍为真,再次执行循环。
可以看出无论1<
=x为真(即1)或者为假(即0),1<
=2的值始终为真,因此循环为无限循环。
10.程序的运行结果是()。
{intk=0;
charc='
do{switch(c++)
{case'
:
k++;
case'
B'
k--;
C'
k+=2;
D'
k=k%2;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 习题 doc