C语言程序设计习题集第4章循环结构答案.docx
《C语言程序设计习题集第4章循环结构答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设计习题集第4章循环结构答案.docx(15页珍藏版)》请在冰豆网上搜索。
C语言程序设计习题集第4章循环结构答案
第4章循环结构
一、选择题
1、有以下程序段
intk=0;
while(k=1)k++;
while循环执行的次数是(A)
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
2、t为int类型,进入下面的循环之前,t的值为0while(t=1)
{……}
则以下叙述中正确的是(B)
A)循环控制表达式的值为0
B)循环控制表达式的值为1
C)循环控制表达式不合法
D)以上说法都不对
(B)
3、在C程序中,与while(m)中表达式m完全等价的是
A)m==0B)m!
=0C)m==1D)m!
=14、有以下程序,程序运行后的输出结果是(C)。
main()
{inti=1,sum=0;
while(i<=4)
{
sum=sum+i;
i=i+1;
}
printf(“%n”d,sum);}
A)4B)5C)10D)死循环
5、有以下程序,程序运行后的输出结果是(D)。
main(){inti=1,sum=0;
while(i<=4)sum=sum+i;
i=i+1;
printf(“%n”d,sum);
}
A)4B)5C)10D)死循环
6、有如下程序
main(){
intn=9;
while(n>6){n--;printf(“%d”,n);}
}
该程序段的输出结果是(B)
A)987B)876C)8765
D)9876
7、以下程序的输出结果是main()
{intnum=0;while(num<=2){num++;printf(}
%n”d,num);}
A)1B)1
22
33
4
8、有以下程序,若运行时输入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;}else
break;}
printf(“n%”f,y);}
A)1.500000B)1.6000009、执行以下程序段时
x=-1;
do
{x=x*x;}while(!
x);
则下面描述正确的是(A)
A)循环体将执行一次
C)循环体将执行无限次
10、有以下程序段其输出结果是intx=3;
do
{printf("%d",x-=2);}
while(!
(--x));
A)1B)30C)1-2D)
11、有如下程序main(){intx=23;
C)1D)l
2
3.62.4<回车>,则输出的结果是
C)2.000000D)2.400000
B)循环体将执行两次
D)系统将提示有语法错误
(C)
死循环
do
(B)。
printf(“%d”,x);
x--;}while(!
x);
}该程序的执行结果是(B)
A)321B)23C)不输出任何内容D)陷入死循环
12、有以下程序段
intn=0,p;
do{scanf(“%d”,&p);n++;}while(p!
=12345&&n<3);此处do—while循环的结束条件是(D)A)P的值不等于12345并且n的值小于3
B)P的值等于12345并且n的值大于等于3
C)P的值不等于12345或者n的值小于3D)P的值等于12345或者n的值大于等于313、以下不构成无限循环的语句或语句组是(A)A)n=0;
do{++n;}while(n<0);
B)n=0;
while
(1){n++;}
C)n=10;
while(n);{n--;}
D)for(n=0,i=1;;i++)n+=i;
14、若i为整型变量,则以下循环执行的次数是(B)for(i=2;i==0;)printf(“%-d-”);,i
A)无限次B)0次C)1次D)2次
15、执行语句for(i=1;i++<4;)后,变量i的值是(C)A)3B)4C)5D)不定
16、有以下程序main(){
inty=9;
for(;y>0;y--)if(y%3==0)printf("%d",--y);
}程序的运行结果是(C)A)741B)963C)852D)875421
17、以下程序执行后sum的值是(C)
A)15B)14C)不确定D)0main()
{inti,sum;
for(i=1;i<6;i++)sum+=i;printf(“n%”d,sum);
}
18、有如下程序
main()
{inti,sum=0;for(i=1;i<=3;sum++)sum+=i;printf(“%n”d,sum);
}
该程序的执行结果是(C)
A)6B)3C)死循环D)0
19、执行语句for(i=3;i>0;i--);i--;后,变量i的值是(C)A)0B)10C)-1D)1
20、执行下面程序片段的结果是(A)。
intx;
for(x=3;x<6;x++)
printf((x%2)?
(“**%d”):
(”#n#”%d),x);
A)**3##4B)##3
**5**4##5
D)
**3##4
##5
21、有以下程序,执行后输出的结果是(A)。
main(){inti;
for(i=0;i<3;i++)switch(i)
{case1:
printf("%d",i);case2:
printf("%d",i);default:
printf("%d",i);
}
}
A)011122B)012C)012020D)120
22、有以下程序,程序运行后的输出结果是(C)。
main()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;
}
printf("%d,%d\n",k,n);
}
A)1,1B)2,2C)3,3D)4,4
23、设变量已正确定义,则以下能正确计算f=n!
的程序段是(D)A)f=0;
for(i=1;i<=n;i++)f*=i;
B)f=1;
for(i=1;iC)f=1;
for(i=n;i>1;i++)f*=i;
D)f=1;
for(i=n;i>=2;i--)f*=i;
24、执行下面程序片段的结果是(B)。
main()
{inta,b;
for(a=1,b=1;a<=100;a++)
{
if(b>=20)break;
if(b%3==1)
{
b+=3;continue;
}
b-=5;
}
printf(“%n”d,a);
}
A)7B)8C)9D)10
25、以下程序的输出结果是(B)。
main()
{inti=0,a=0;
while(i<20)
{for(;;)
{if((i%10)==0)break;
elsei--;
}
i+=11;a+=i;
}
printf("%d\n",a);
}
A)21B)32C)33D)11
26、以下程序的输出结果是(A)main()
{inti,j,x=0;
for(i=1;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;}
x++;}
printf(“x=%n”d,x);}A)x=4B)x=8C)x=6D)x=12
27、有以下程序
main()
inti,j;
for(i=3;i>=1;i--)
{
for(j=1;j<=2;j++)printf("%d",i+j);
printf("\n");
}
}
程序的运行结果是(D)
A)234B)432C)23
34554334
45
28、有以下程序
main()
{inti=5;
do
{
if(i%3==1)
if(i%5==2)
{printf("*%d",i);break;}
i++;
}while(i!
=0);
printf("\n");
}
程序的运行结果是(A)
A)*7B)*3*5C)*5
29、以下程序的结果是(A)
main()
{intn;
for(n=1;;)
{if(++n%2==0)continue;
if(++n%3==0)break;}
printf("n=%d",n);
}
A)n=6B)n=5C)n=4D)死循环
30
D)45
34
23
D)*2*6
、以下叙述中正确的是(C)
A)break语句只能用于switch语句题中
B)continue语句的作用是:
使程序的执行流程跳出包含它的所有循环
C)break语句只能用在循环体内和switch语句体内
D)在循环体内使用break语句和continue语句的作用相同
二、程序阅读题(共10题)
1、以下程序运行后的输出结果是52。
main()
{
inti=10,j=0;
do
{j=j+i;
i--;
}while(i>2);
printf(“%”,j);
}
2、设有以下程序:
main()
{
intn1,n2;
scanf(“%d,&n2);
while(n2!
=0)
{
n仁n2%10;
n2=n2/10;
printf(“%d',n1);
}
}
8921
程序运行后,如果从键盘上输入1298;则输出结果为
3、以下程序的输岀结果是5。
main()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
4、阅读下面程序,程序的结果是2,1,0。
main()
{inti=7;
for(i=2;i>0;i--)
printf(”%d”i);
printf(”%c”i);}
5、阅读下面程序,程序的结果是14,4。
main()
{inti,j,m=0;
for(i=2;i<=10;i+=4)for(j=3;j<=4;j++)
{m++;i++;}
printf("%d,%d",i,m);}
6、阅读下面程序,程序的结果是1978。
main()
{intj,a=2,n=4;
longs=O,t=O;
for(j=0;jt=t*1O+a;
s=t;
for(j=1;j{t=t/10;
s=s-t;}
printf(”%d,s);
}
7、以下程序运行后的输出结果是0918273645
main()
{
charc1,c2;
for(c仁'0',c2='9';c1printf("%c%c",c1,c2);
printf("\n");
}
8、以下程序的输出结果是_5_。
main()
{
ints,i;
for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
9、执行以下程序后,输出#号的个数是6。
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
10、以下程序的输出结果是x=4
main()
{inti,j,x=0;
for(i=1;i<2;i++)
{x++;
for(j=0;j<=3;j++)
{if(j%2)continue;
x++;}
x++;}
printf(“x=%dn”,x);}
三、程序填空题
1、以下程序的功能是计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
main()
{intm=0,f=1,i,n;
scanf(“%d,&n);
for(i=1;i<=n;i++)
{m+=i*f;
f=-f;
}
printf(“m=%'d,m)
}
2、以下程序的功能是计算s=1+1/2!
+1/3!
+1/4!
+…+1/n!
,请填空。
main()
{
doubles=0.0,fac=1.0;inti;
intn;
scanf(“%d,&n);
for(i=1,i<=n;i++)
{fac=fac*1.0/i;
s=s+fac;
}
printf(“s=%lf”,s);
}
3、以下程序的功能是计算:
s=1+12+123+1234+12345。
请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+t*10;s=s+t;}
printf("s=%d\n",s);
}
4、要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=18;printf("%”,i+=2));
5、以下函数的功能是:
求x的y次方,请填空。
doublefun(doublex,inty)
{inti;
doublez;
for(i=1,z=x;ireturnz;
}
6、以下程序的功能是根据以下近似公式求n值:
(n*n)/6=1+1/(2*2)+1/(3*3)+..+1/(n*n)
现在请你在下面的函数中填空,完成求n的功能。
main(){
doubles=0.0;longi,n;
scanf(“%ld”,&n);
for(i=1;i<=n;i++)s=s+1.0/(i*i);
printf(“%lf”,sqrt(6*s));
}
7、以下用来输出两整数M和N之间的所有素数(质数),请填空,使程序能正确运行。
#defineM4
#defineN30
main()
{
inti,j,k,s=0;
for(i=M;i<=N;i++)
{for(j=2;j<_J—;j++)
if(i%j==0)break;
if(j>=i)
{printf("%5d",i);
s=s+1;
if(s%5==0)printf("\n");
}
}
printf("\n");}
8、以下程序实现:
从键盘输入一位整数,计算其各位数字之和。
比如输入整数31421,则
打印结果为11。
请填空。
main(){
inti,sum=O,a;
scanf("%d",&i);
while(i>0){
a=i%10;
sum+=a;
i=i/10;
}
printf("%d\n",sum);
}
9、以下程序实现:
计算1~10之间(不含10)的奇数之和以及偶数之和
main()
{
inta,b,i;
a=b=O;
for(i=0;i<10;i+=2)
{
a=a+i:
b=b+i+1:
}
printf("偶数为:
%d,奇数和为:
%d\n",a,b);
}
10、以下程序的功能是:
输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。
main()
inti,j;
for(i=0;i<10;i++){
j=i*10+6;
if(j%3==0)continue;
printf(“%d”,j);
}
}
四、编程题
m,输出1至Um(含m)能被7或11
m为50,则程序输出7、11、14、
5。
1、写一个程序,程序的功能是:
从键盘输入一个整数整除的所有整数,并计算出这些数的个数。
例如:
如果
21、22、28、33、35、42、44、49共11个数。
2、计算100到1000间有多少个数其各位数字之和是
3、从键盘输入整数n,输出1+3+5+7+…前n项的和(输入的*=10)
4、编写程序,实现如下图形12
123
123412345
5、打印100-999以内所有满足条件的数。
条件为,这个数等于其个位数,十位数,百位数立方和,如153=1*1*1+5*5*5+3*3*3