C语言第四章习题1014更新.docx
《C语言第四章习题1014更新.docx》由会员分享,可在线阅读,更多相关《C语言第四章习题1014更新.docx(14页珍藏版)》请在冰豆网上搜索。
C语言第四章习题1014更新
练习4-1
一、选择题
1.已知:
charc='A';inti=1,j;,执行语句j=!
c&&i++;,则i和j的值是()。
A.1,1B.1,0C.2,1D.2,0
2.已知:
intx=1,y=2,z;,则执行z=x>y?
++x:
++y;,则z的值为()。
A.1B.2C.3D.4
3.已知:
inta=4,b=5,c;,则执行表达式c=a=a>b后变量a的值为()。
A.0B.1C.4D.5
4.已知:
charch='A';,则表达式ch=(ch>='A'&&ch<='Z')?
(ch+32):
ch;的值是()。
A.'A'B.'a'C.'Z'D.'z'
5.若w=1,x=2,y=3,z=4;,则条件表达式w>x?
w:
yy:
z的结果为()。
A.4B.3C.2D.1
6.已知:
intw=3,x=10,z=7;,则执行下面语句后的结果为()。
printf("%d",x>10?
x+100:
x-10);
printf("%d",w++||z++);
printf("%d",!
w>z);
printf("%d",w&&z);
A.0111B.1111C.0101D.0100
7.已知:
a=b=c=1且a、b、c均为int型变量,执行以下语句:
++a||++b&&++c;
则变量a值为(①),b值为(②)。
①A.不正确B.0C.2D.1
②A.1B.2C.不正确D.0
8.执行下面语句后x的值为()。
inta=14,b=15,x;
charc='A';
x=((a&b)&&(c<'a'));
A.TRUEB.FALSEC.0D.1
9.要判断char型变量m是否是数字,可以使用下列表达式()。
A.0<=m&&m<=9B.'0'<=m&&m<='9'
C."0"<=m&&m<="9"D.前面三个答案均是错误的
10.能正确表示“当x取值在[1..10]和[200..210]范围内为真,否则为假”的表达式是()。
A.(x>=1)&&(x<=10)&&(x>=200)&&(x<=210)
B.(x>=1)||(x<=10)||(x>=200)||(x<=210)
C.(x>=1)&&(x<=10)||(x>=200)&&(x<=210)
D.(x>=1)||(x<=10)&&(x>=200)||(x<=210)
11.设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是()。
A.'x'&&'y'B.x<=yC.x||y+z&&y-zD.!
((xz||1)
12.已知x=43,ch='A',y=0;,则表达式x>=y&&ch<'B'&&!
y的值是()。
A.0B.语法错C.1D.“假”
13.判断char型变量c1是否为小写字母的正确表达式为()。
A.'a'<=c1<='z'B.(c1>=a)&&(c1<=z)
C.('a'>=c1)||('z'<=c1)D.(c1>='a')&&(c1<='z')
二、读程序、写结果
14.下面程序的运行结果:
①()、②()、③()、④()、⑤()。
#include
main()
{inti=16,j,x=6,y,z;
j=i+++1;printf("%d\n",j);/*输出①*/
x*=i=j;printf("%d\n",x);/*输出②*/
x=1;y=2;z=3;
x+=y+=z;
printf("%d\n",z+=x>y?
x++:
y++);/*输出③*/
x=0x02ff;y=0xff00;
printf("%d\n",(x&y)>>4|0x005f);/*输出④*/
x=y=z=-1;
++x||++y&&++z;
printf("%d%d%d\n",x,y,z);/*⑤*/
}
练习4-2
一、选择题
1.下面程序的输出是()。
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,b);
}
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
2.若有说明:
intx,y;,不能实现以下函数关系的程序段是()。
A.if(x<0)y=-1;B.y=-1;C.y=0;D.if(x>=0)
elseif(x==0)y=0;if(x!
=0)if(x>=0)if(x>0)y=1;
elsey=1;if(x>0)y=1;{if(x>0)y=1;}elsey=0;
elsey=0;elsey=-1;elsey=-1;
3.已知:
intx,a,b;,下列选项中错误的if语句是()。
A.if(a=b)x++;B.if(a=
4.若inti=10;,执行下列程序后,变量i的正确结果是()。
switch(i)
{case9:
i+=1;
case10:
i+=1;
case11:
i+=1;
default:
i+=1;
}
A.10B.11C.12D.13
5.设有说明语句:
inta=1,b=0;,则执行以下语句后输出为()。
switch(a)
{case1:
switch(b)
{case0:
printf("**0**");break;
case1:
printf("**1**");break;
}
case2:
printf("**2**");break;
}
A.**0**B.**0****2**C.**0****1****2**D.有语法错误
6.阅读下列程序,其运行结果是()。
#include
main()
{charc='A';
if('0'<=c<='39')printf("YES");
elseprintf("NO");
}
A.YESB.NOC.YESNOD.语句错误
7.下列程序的运行结果为()。
#include
main()
{inta=2,b=-1,c=2;
if(a
if(b<0)c=0;
elsec+=1;
printf("%d\n",c);
}
A.0B.1C.2D.3
8.阅读程序,其运行结果是()。
#include
main()
{inta=-1,b=1,k;
if((++a<0)&&(b--<=0))printf("%d%d\n",a,b);
elseprintf("%d%d\n",b,a);
}
A.-11B.01C.10D.00
9.选择运行结果。
#include
main()
{charch;
ch=getch();
switch(ch)
{case65:
printf("%c",'A');
case66:
printf("%c",'B');
default:
printf("%s\n","other");
}
}
如程序可以正常运行,当从键盘输入字母A时,输出结果为()。
A.AB.ABotherC.AotherD.编译错误,无法运行
10.当a=1,b=3,c=5,d=4时,执行完成下面一段程序后x的值是()。
if(a
if(celseif(aif(belsex=3;
elsex=6;
elsex=7;
A.1B.2C.3D.6
二、填空题
11.以下程序的输出结果是()。
main()
{inta=100,x=10,y=20,ok1=5,ok2=0;
if(xif(y!
=10)
if(!
ok1)a=1;
elseif(ok2)a=10;
a=-1;
printf("%d\n",a);
}
12.阅读以下程序:
main()
{intt,h,m;
scanf("%d",&t);
h=(t/100)%12;
if(h==0)h=12;
printf("%d:
",h);
m=t%100;
if(m<10)printf("0");
printf("%d",m);
if(t<1200||t==2400)printf("AM");
elseprintf("PM");
}
若运行时输入:
1605,程序的运行结果是()。
13.若运行时输入:
35/,则以下程序的运行结果是()。
main()
{floatx,y;charo;doubler;
scanf("%f%f%c",&x,&y,&o);
switch(o)
{case'+':
r=x+y;break;
case'-':
r=x-y;break;
case'*':
r=x*y;break;
case'/':
r=x/y;break;
}
printf("%f",r);
}
练习4-3
一、选择题
1.以下不是死循环的语句为()。
A.for(;;x+=i)B.while
(1){x++;}
C.for(i=10;;i--)sum+=i;D.for(;(c=getchar())!
='\n';)printf("%c",c);
2.执行语句for(i=0;i++<3;);后,变量i的值为()。
A.2B.3C.4D.5
3.下面的for语句()。
for(x=0,y=0;(y!
=123)&&(x<4);x++);
A.是无限循环B.循环次数不定C.循环执行4次D.循环执行3次
4.与语句while(!
x)等价的语句是()。
A.while(x==0)B.while(x!
=0)C.while(x!
=1)D.while(~x)
5.定义inti=1;,执行语句while(i++<5);后,i的值为()。
A.3B.4C.5D.6
6.若a=1,b=10为int型变量,则执行以下语句后b的值为(①),a的值为(②)。
do
{b-=a;
a++;
}while(b--<0);
①A.9B.-2C.-1D.8
②A.4B.2C.1D.3
7.若inta=5;,则执行以下语句后打印的结果为()。
do
{printf("%2d\n",a--);
}while(!
a);
A.5B.不打印任何内容C.4D.陷入死循环
8.若intx;,且有下面的程序片段,则输出结果为()。
for(x=3;x<6;x++)printf((x%2)?
"**%d":
"##%d\n",x);
A.**3B.##3C.##3D.**3##4
##4**3**4##5**5
**5##5
9.等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。
(①),(②)。
#include
main()
{inta,q,n,sum;
a=1;q=2;n=sum=0;
do
{①;
++n;
a*=q;
}while(sum<100);
②;
printf("%d\n",n);
}
①A.sum++B.sum+=aC.sum*=aD.a+=sum
②A.n=n-2B.n=nC.n++D.n-=1
二、读程序,写结果
10.下列程序的运行结果为:
i=(①),j=(②),k=(③)。
#include
main()
{inta=10,b=5,c=5,d=5;
inti=0,j=0,k=0;
for(;a>b;++b)i++;
while(a>++c)j++;
dok++;
while(a>d++);
printf("%d,%d,%d\n",i,j,k);
}
11.下面过程的运行结果:
①是(),②是()。
#include
main()
{inti,j;
for(i=0,j=10;iprintf("%d\n",i);/*输出①*/
printf("%d\n",j);/*输出②*/
}
12.下面程序的运行结果是()。
#include
main()
{intk,j,m;
for(k=5;k>=1;k--)
{m=0;
for(j=k;j<=5;j++)m=m+k*j;
}
printf("%d\n",m);
}
练习4-4
读程序,写结果
1.下面程序的运行结果是()。
#include
main()
{inti=0,j=0,k=0,m;
for(m=0;m<4;m++)
switch(m)
{case0:
i=m++;
case1:
j=m++;
case2:
k=m++;
case3:
m++;
}
printf("\n%d,%d,%d,%d",i,j,k,m);
}
2.下面程序的运行结果是()。
#include
main()
{inti=1;
while(i<=15)
if(++i%3!
=2)continue;
elseprintf("%d",i);
printf("\n");
}
3.若运行以下程序时,从键盘输入Adescriptor(表示回车),则下面程序的运行结果是()。
#include
main()
{charc;
intv0=0,v1=0,v2=0;
do
{switch(c=getchar())
{case'a':
case'A':
case'e':
case'E':
case'i':
case'I':
case'o':
case'O':
case'u':
case'U':
v1+=1;
default:
v0+=1;v2+=1;
}
}while(c!
='\n');
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
4.下面程序段的输出结果是()。
x=3;
do
{y=x--;
if(!
y)
{printf("*");
continue;
}
printf("#");
}while(1<=x<=2);
5.下面程序的运行结果是()。
#include
main()
{inti,j,x=0;
for(i=0;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;
}
x++;
}
printf("x=%d\n",x);
}