最新C语言习题与答案1资料.docx

上传人:b****9 文档编号:25168051 上传时间:2023-06-05 格式:DOCX 页数:49 大小:31.95KB
下载 相关 举报
最新C语言习题与答案1资料.docx_第1页
第1页 / 共49页
最新C语言习题与答案1资料.docx_第2页
第2页 / 共49页
最新C语言习题与答案1资料.docx_第3页
第3页 / 共49页
最新C语言习题与答案1资料.docx_第4页
第4页 / 共49页
最新C语言习题与答案1资料.docx_第5页
第5页 / 共49页
点击查看更多>>
下载资源
资源描述

最新C语言习题与答案1资料.docx

《最新C语言习题与答案1资料.docx》由会员分享,可在线阅读,更多相关《最新C语言习题与答案1资料.docx(49页珍藏版)》请在冰豆网上搜索。

最新C语言习题与答案1资料.docx

最新C语言习题与答案1资料

5.1选择题

【题5.1】设有程序段

intk=10;

while(k=0)k=k-1;

则下面描述中正确的是。

A)while循环执行10次B)循环是无限循环

C)循环体语句一次也不执行D)循环体语句执行一次

【题5.2】设有以下程序段

intx=0,s=0;

while(!

x!

=0)s+=++x;

printf("%d",s);

则。

A)运行程序段后输出0B)运行程序段后输出1

C)循环的控制表达式不正确D)程序段执行无限次

【题5.3】语句while(!

E);中的!

E等价于。

A)E==0B)E!

=1C)E!

=0D)E==1

【题5.4】下面程序段的运行结果是。

a=1;b=2;c=2;

while(a

printf("%d,%d,%d",a,b,c);

A)1,2,0B)2,1,0C)1,2,1D)2,1,1

【题5.5】下面程序段的运行结果是。

x=y=0;

while(x<15)

y++,x+=++y;

printf("%d,%d",y,x);

A)20,7B)6,12C)20,8D)8,20

【题5.6】下面程序段的运行结果是。

intn=0;

while(n++<=2);

printf("%d",n);

A)2B)3C)4D)语法错误

【题5.7】设有程序段

t=0;

while(printf("*"))

{t++;

if(t<3)break;

}

下面描述正确的是。

A)其中循环控制表达式与0等价

B)其中循环控制表达式与'0'等价

C)其中循环控制表达式是不合法的

D)以上说法都不对

【题5.8】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。

当输入一对相等数时结束循环,请选择填空。

#include

main()

{inta,b,t;

scanf("%d%d",&a,&b);

while()

{if(a>b)

{t=a;a=b;b=t;}

printf("%d,%d\n",a,b);

scanf("%d%d",&a,&b);

}

}

A)!

a=bB)a!

=bC)a==bD)a=b

【题5.9】下面程序的功能是从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m,n中的较大者

#include

main()

{intm=0,n=0;

charc;

while((【1】)!

='\n')

{if(c>='A'&&c<='Z')m++;

if(c>='a'&&c<='z')n++;

}

printf("%d",m

【2】);

}

【1】A)c=getchar()B)getchar()

C)getchar()D)scanf("%c",c)

【2】A)n:

mB)m:

n

C)m:

mD)n:

n

【题5.10】下面程序的功能是将小写字母变成对应大写字母后的第二个字母,其中y变成A,z变成B。

请选择填空。

#include"stdio.h"

main()

{charc;

while((c=getchar())!

='\n')

{if(c>='a'&&c<='z')

{【1】;

if(c>'Z')

【2】;

}

printf("%c",c);

}

}

【1】A)c+=2B)c-=32C)c=c+32+2D)c-=30

【2】A)c='B'B)c='A'C)c-=26D)c=c+26

【题5.11】下面程序的功能是在输入一批正整数中求出最大者,输入0结束循环,请选择填空。

#include"stdio.h"

main()

{inta,max=0;

scanf("%d",&a);

while()

{if(max

scanf("%d",&a);

}

printf("%d",max);}

A)a==0B)aC)a==1D)!

a

【题5.12】下面程序的运行结果是。

#include

main()

{intnum=0;

while(num<=2)

{num++;

printf("%d\n",num);

}

}

A)1B)1C)1D)1

222

33

4

【题5.13】若运行以下程序时,从键盘输入2473表示回车),则下面程序的运行结果是。

#include"stdio.h"

{intc;

while((c=getchar())!

='\n')

switch(c-'2')

{case0:

case1:

putchar(c+4);

case2:

putchar(c+4);break;

case3:

putchar(c+3);

default:

putchar(c+2);break;

}

printf("\n");

}

A)668977B)668966C)66778777D)6688766

【题5.14】以下程序的功能是计算一个整数的各位数字之和,请选择填空。

intn,m=1;

scanf(“%d”,&n);

for(;n!

=0;)

{m【】;

n/=10;

}

printf(“%d”,m);

A)+=n%10B)=n%10

C)+=nD)=n/10

【题5.15】以下能正确计算10!

的程序段是。

A)do{i=1;s=1;B)do{i=1;s=0;

s=s*i;s=s*i;

i++;i++;

}while(i<=10);}while(i<=10);

C)i=1;s=1;D)i=1;s=0;

do{s=s*i;do{s=s*i;

i++;i++;

}while(i<=10);}while(i<=10);

【题5.16】以下程序段。

x=-1;

do

{x=x*x;}while(!

x);

A)是死循环B)循环执行两次

C)循环执行一次D)有语法错误

【题5.17】以下描述中正确的是。

A)while,do-while,for循环中的循环体语句都至少被执行一次

B)do-while循环中,在while(表达式)后面的分号可以省略

C)while循环体中,一定要有能使while后面表达式的值变为零("假")的操作

D)do-while循环中,根据情况可以省略while。

【题5.18】若有语句如下,则程序段的输出是。

intx=3;

do{printf("%d",x-=2);}while(!

(--x));

A)1B)1和-2C)3和0D)死循环

【题5.19】下面程序的功能是计算正整数2345的各位数字平方和。

#include"stdio.h"

main()

{intn,sum=0;

n=2345;

do{sum=sum+【1】;

n=【2】;

}while(n);

printf("sum=%d",sum);}

【1】A)n%10B)(n%10)*(n%10)

C)n/10D)(n/10)*(n/10)

【2】A)n/1000B)b/100

C)n/10D)n%10

【题5.20】下面程序是从键盘输入学号,然后输出学号中百位数是3的学号,输入0时结束循环。

请选择填空。

#include

main()

{longintnum;

scanf("%ld",&num);

do

{if(【1】)printf("%ld",num);

scanf("%ld",&num);

}while(【2】);

}

【1】A)num%100/10==3B)num/100%10==3

C)num%10/10==3D)num/10%10==3

【2】A)!

numB)num>0==0

C)!

num==0D)!

num!

=0

【题5.21】等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小于100的最大n,请选择填空。

#include

main()

{inta,q,n,sum;

a=1;q=2;n=sum=0;

do

{【1】;

++n;a*=q;

}while(sum<100);

【2】;

printf("%d\n",n);

}

【1】A)sum++B)sum+=aC)sum*=aD)a+=sum

【2】A)n=n-2B)n=nC)n++D)n-=1

【题5.22】下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除。

请选择填空。

#include

main()

{inti=0,j,k;

do{i++;k=316-13*i;}while();

j=k/11;

printf("316=13*%d+11*%d",i,j);

}

A)k/11B)k%11C)k/11==0D)k/11==0

【题5.23】下面程序的运行结果是。

#include

main()

{inty=10;

do{y--;}while(--y);

printf("%d\n",y--);

}

A)-1B)1C)8D)0

【题5.24】若运行以下程序时,从键盘输入<回车>,则下面程序的运行结果是。

#include

main()

{charc;

intv1=0,v2=0;

do{

switch(c=getchar())

{case'a':

v1+=1;

case't':

case'T':

v2+=1;

default:

v1+=1;v2+=1;

}

}while(c!

='\n');

printf("v1=%d,v2=%d\n",v1,v2);

}

A)v1=3,v2=4B)v1=4,v2=4

C)v1=6,v2=8D)v1=7,v2=9

【题5.25】下面程序的运行结果是。

#include

main()

{inta=1,b=10;

do

{b-=a;a++;}while(b--<0);

printf("a=%d,b=%d\n",a,b);

}

A)a=3,b=11B)a=2,b=8C)a=1,b=-1D)a=4,b=9

【题5.26】下面有关for循环的正确描述是。

A)for循环只能用于循环次数已经确定的情况

B)for循环是先执行循环体语句,后判断表达式

C)在for循环中,不能用break语句跳出循环体

D)for循环的循环体可以包括多条语句,但必须用花括号括起来

【题5.27】对for(表达式1;;表达式3)可理解为。

A)for(表达式1;0;表达式3)

B)for(表达式1;1;表达式3)

C)for(表达式1;表达式1;表达式3)

D)for(表达式1;表达式3;表达式3)

【题5.28】若i为整型变量,则以下循环执行次数是。

for(i=2;i==0;)printf("%d",i--);

A)无限次B)0次C)1次D)2次

【题5.29】以下for循环的执行次数是。

for(x=0,y=0;(y=123)&&(x<4);x++);

A)是无限循环B)循环次数不定C)4次D)3次

【题5.30】以下不是无限循环的语句为。

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;

【题5.31】下面程序段的运行结果是。

for(y=1;y<10;)y=((x=3*y,x+1),x-1);

printf("x=%d,y=%d",x,y);

A)x=27,y=27B)x=12,y=13C)x=15,y=14D)x=y=27

【题5.32】下面程序段的运行结果是。

for(x=3;x<6;x++)printf((x%2)?

("**%d"):

("##%d\n")),x);

A)**3B)##3C)##3D)**3##4

##4**4**4##5**5

**5##5

【题5.33】以下不是无限循环的语句为。

A)inti=100;

while

(1)

{i=i%100+1;

if(i>100)break;}

B)for(;;);

C)intk=0;

do{++k;}while(k>=0);

D)ints=36;

while(s);--s;

【题5.34】执行语句for(i=1;i++<4;);后变量的值为。

A)3B)4C)5D)不定

【题5.35】有一堆零件(100到200之间),如果分成4个零件一组则多出2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多出5个零件。

下面程序是求这堆零件总数,请选择填空。

#include

main()

{inti;

for(i=100;i<200;i++)

if((i-2)%4==0)

if(!

((i-3)%7))

if(【】)

printf("%d",i);

}

A)i%9=5B)i%9!

=5C)(i-5)%9!

=0D)i%9==5

【题5.36】下面程序的功能是计算1~50中是7的倍数的数值之和,请选择填空。

#include

main()

{inti,sum=0;

for(i=1;i<=50;i++)

if(【1】)sum+=i;

printf("%d",sum);

}

A)(int)(i/7)==i/7B)(int)i/7==i/7C)i%7!

=0D)i%7==0

【题5.37】下面程序的功能是计算1~10之间的奇数之和和偶数之和。

请选择填空。

#include

main()

{inta,b,c,i;

a=c=0;

for(i=0;i<=10;i+=2)

{a+=i;

【1】;

c+=b;

}

printf("偶数之和=%d\n",a);

printf("奇数之和=%d\n",【2】);

}

【1】A)b=i--B)b=i+1C)b=i++D)b=i-1

【2】A)c-10B)cC)c-11D)c-b

【题5.38】下面程序的运行结果是。

#include

main()

{inti;

for(i=1;i<=5;i++)

switch(i%5)

{case0:

printf("*");break;

case1:

printf("#");break;

default:

printf("\n");break;

case2:

printf("&");

}

}

A)#&&*B)#&C)#D)#&

&&

&*&*

&

*

【题5.39】下面程序的运行结果是。

#include

main()

{intx,i;

for(i=1;i<=100;i++)

{x=i;

if(++x%2==0)

if(++x%3==0)

if(++x%7==0)

printf("%3d",x);

}

}

A)3981B)4284C)2668D)2870

【题5.40】下面程序段的功能是计算1000!

的末尾含有多少个零。

请选择填空。

(提示:

只要计算出1000!

中含有因子5的个数即可)

for(k=0,i=5;i<=1000;i+=5)

{m=i;

while(){k++;m=m/5;}

A)m%5=0B)m=m%5==0C)m%5==0D)m%!

=0

【题5.41】下面程序的功能是求算式xyz+yzz=532中x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。

#include

main()

{intx,y,z,i,result=532;

for(x=1;x<10;x++)

for(y=1;y<10;y++)

for(【1】;z<10;z++)

{i=100*x+10*y+z+100*y+10*z+z;

if(【2】)

printf("x=%d,y=%d,z=%d\n",x,y,z);

}

}

【1】A)z=xB)z=1C)z=0D)z=y

【2】A)i/result==1B)i=resultC)i!

=resultD)i==result

【题5.42】下面程序是对输出一个正整数等差数列的前十项,此数列前四项之和及积分别是26和880,请选择填空。

#include

main()

{inta,d,i,s,f,x;

for(a=1;a<=6;a++)

for(d=1;【1】;d++)

{s=0;f=1;x=a;

for(i=1;i<=4;i++)

{s=s+x;

f=f*x;

x=x+d;

}

if(s==26&&f==880)

for(i=0;i<10;i++)

printf("%3d",【2】;

}

printf(“\n”);

}

【1】A)d<=aB)空C)d<=5D)d

【2】a+i*dB)i*dC)a+(i+1)*dD)a+d

【题5.43】下面程序的运行结果是。

#include

main()

{inti,b,k=0;

for(i=1;i<=5;i++)

{b=i%2;

while(b-->=0)k++;

}

printf("%d,%d",k,b);

}

A)3,-1B)8,-1C)3,0D)8,-2

【题5.44】以下正确的描述是。

A)continue语句的作用是结束整个循环的执行。

B)只能在循环体内和switch语句体内使用break语句。

C)在循环体内使用break语句或continue语句的作用相同。

D)从多层循环嵌套中退出时,只能使用goto语句。

【题5.45】下面程序段。

for(t=1;t<=100;t++)

{scanf("%d",&x);

if(x<0)continue;

printf("%3d",t);

}

A)当x<0时整个循环结束

B)x>=0时什么也不输出

C)printf函数永远也不执行

D)最多允许输出100个非负整数

【题5.46】下面程序段【】

x=3;

do

{y=x--;

if(!

y){printf(“x”);continue;}

printf(“#”);

}while(1<=x<=2);

A)将属出##

B)将输出##*

C)是死循环

D)含有不合发的控制表达式

【题5.47】以下是死循环的程序段是【】

A)for(i=1;;)

{if(++i%2==0)continue;

if(++i%3==0)break;

}

B)i=32767;

do{if(i<0)break;}while(++i);

C)for(i=1;;)if(++i<10)continue;

D)i=1;

while(i--);

【题5.48】以下描述正确的是【】

A)goto语句只能用于退出多层循环

B)switch语句中不能出现continue语句

C)只能用continue语句来终止本次循环

D)在循环中break语句不能独立出现

【题5.49】与下面程序段等价的是【】

for(n=100;n<=200;n++)

{if(n%3==0)continue;

printf(“%4d”,n);

}

A)for(n=100;(n%3&&n<=200;n++)printf(“%4d”,n);

B)for(n=100;(n%3)||n<=200;n++)printf(“%4d”,n);

C)for(n=100;n<=200;n++)if(n%3!

=0)printf(“%4d”,n);

D)for(n=100;n<=200;n++)

{if(n%3)printf(“%4d”,n);

elsecontinue;

break;

}

【题5.50】下面程序的功能是将从键盘输入的偶数写成两个素数之和。

请选择填空【】

#include

#include

main()

{inta,b,c,d;

scanf(“%4d”,&a);

for(b=3;b<=a/2;b+=2)

{for(c=2;c<=sqrt(b);c++)

if(b%c==0)break;

if(c>sqrt(b))d=【】;

elsebreak;

for(c=2;c<=sqrt(d);c++)

if(d%c==0)break;

if(c>sqrt(d))printf(“%d=%d+%d\n”,a,b,d);

}

}

A)a+b

B)a-b

C)a*b

D)a/b

【题5.51】下面程序的运行结果是【】

#include

main()

{intk=0;charc=’A’;

do

{switch(c++)

{case‘A’:

k++;break;

case’B’:

k--;

case’C’:

k+=2;break;

case’D’:

k=k%2;continue;

case’E’:

k=k*10;break;

default:

k=k/3;

}

k++;

}while(c<’G’);

pintf(“k=%d\n”,k);

}

A)k=3

B)k=4

C)k=2

D)k=0

【题5.52】若运行以下程序时,从键盘输入3.62.4<回车>,则下面程序的运行结果是【】

#include

#include

main()

{floatx,y,z;

scanf(“%f%f”,&x&y);

z=x/y;

while

(1)

if(fabs(z)>1.0){x=y;y=z;z=x/y}

elsebreak;

printf(“%f\n”,y);

}

A)1.500000

B)1.600000

C)2.000000

D)2.400000

【题5.53】下面程序的运行结果是【】

#include

main()

{inta,b;

for

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1