C语言循环习题答案.docx

上传人:b****8 文档编号:9137962 上传时间:2023-02-03 格式:DOCX 页数:19 大小:62.69KB
下载 相关 举报
C语言循环习题答案.docx_第1页
第1页 / 共19页
C语言循环习题答案.docx_第2页
第2页 / 共19页
C语言循环习题答案.docx_第3页
第3页 / 共19页
C语言循环习题答案.docx_第4页
第4页 / 共19页
C语言循环习题答案.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

C语言循环习题答案.docx

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

C语言循环习题答案.docx

C语言循环习题答案

循环习题集锦

一.    选择题

1.for(i=0;i<10;i++);结束后,i的值是;(10)

A9B10C11D12

2.下面程序的循环次数是:

(D)

intk=0;

while(k<10)

{if(k<1)continue;

if(k==5)break;

k++;

}

A.5B6C4D死循环,不能确定循环次数

3.下面程序的输出结果是(10)

main()

{

ints,k;

for(s=1,k=2;k<5;k++)

s+=k;

printf(“%d\n”,s);

}

A1B9C10D15

4.要使下面程序输出10个整数,则在下画线处填入正确的数是:

(c)

for(i=0;i<=;)

printf(“%d\n”,i+=2);

A9B10C18D20

5.运行下面程序:

(B)

main()

{inti=10,j=0;

do

{j=j+i;

i--;

}while(i>5);

printf(“%d\n”,j);

}

输出结果是:

A45B40C34D55

6.运行下面程序

#include“stdio.h”

main()

{intk=0,a=1;

while(k<10)

{

for(;;)

{if((k%10)==0)

break;

else

k--;

}

k+=11;

a+=k;

}

printf(“%d%d\n”,k,a);

}

则输出的结果是(C)

A2132B2133C1112D1011

7.以下叙述正确的是:

(D)

A.do---while语句构成的循环不能用其他语句构成的循环来代替。

B.do---while语句构成的循环只能用break语句退出。

C.用do---while语句构成的循环,在while后的表达式为非零时结束循环。

D.用do---while语句构成的循环,在while后的表达式为零时结束循环。

8.有如下程序:

main()

{intx=3;

do{

printf(“%d”,x--);

}while(!

x);

}

该程序的执行结果是:

(C)

A321B210C3D2

9.若k为整型变量,则下面while循环执行的次数为:

(A)

k=10;

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

A0B1C10D无限次

10.下面有关for循环的正确描述是(D)

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

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

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

D.for循环的循环体语句汇总,可以包含多条语句,但必须用花括号括起来。

11.对for(表达式1;;表达式3)可理解为(B)

Afor(表达式1;0;表达式3)

Bfor(表达式1;1;表达式3)

Cfor(表达式1;表达式1;表达式3)

Dfor(表达式1表达式2;表达式3)

12.若i为整型变量,则以下循环执行的次数是(B)

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

A.无限次B0次C1次D2次

13.以下循环体的执行次数是;(B)

main()

{

intI,j;

for(i=0,j=3;i<=j;i+=2,j--)

printf(“%d\n”,i);

}

A3B2C1D0

14.执行以下程序后,输出结果是:

(D)

main()

{inty=10;

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

printf(“%d”,y--);

}

A-1B1C8D0

15以下程序的输出结果是:

(C)

mian()

{inta,b;

for(a=1,b=1;a<=100;a++)

{

if(b>=10)break;

if(b%3==1){b+=3;continue;}

}

printf(“%d”,a);

}

A101B3C4D5

二、填空题

1.         循环的3个常见语句分别是?

(for,while,do,break,continue)

2.         下面程序的运行结果为:

(14,26)

main()

{inta=10,y=0;

do

{a+=2;y+=a;

if(y>50)break;

}while(a<14);

printf(“a=%d,y=%d\n”,a,y);

}

3.从键盘输入12345-1回车,则下面程序运行的结果是:

(14,-1)

main()

{intn,k=0;

do

{scanf(“%d”,&n);

k+=n;

}while(n!

=-1);

printf(“k=%d,n=%d”,k,n);

}

4.下面程序的运行结果为:

39(--i=1,i=2两次循环)

main()

{inti,j,s=0;

for(i=1,j=5;i

s+=i*10+j;

printf(“\n%d”,s);

}

5.下面程序的运行结果是19(i=9,s=9;i=6,s=15;i=3,s=18)

main()

{

inti=10,s=0;

for(;--i;)

if(i%3==0)

s+=i;

s++;

printf(“\ns=%d”,s);

}

6.下面程序的运行结果是–22222(n=4,s=22;n=4,s=222;n=2,s=2222;n=1,s=22222)

main()

{inta=2,n=5,s;

s=a;

for(;--n;)

s=s*10+a;

printf(“%d”,s);

}

7.下面的程序运行时,循环体语句“a++”运行的次数为:

10

main()

{inti,j,a=0;

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

for(j=4;j>=0;j--)

a++;

}

8.下面的程序运行后,a的值为:

7

main()

{inti,j,a=0;

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

for(j=4;j>=0;j--)a++;

}

9.下面程序的运行结果为:

(8)--(s=4,i=3;s=7,i=4;s=11,i=6;s=17,i=8)

inti=1,s=3;

do{

s+=i++;

if(s%7==0)continue;

else++i;

}while(s<15);

printf(“%d”,i);

10.当运行以下程序时,从键盘输入China#回车,则下面程序的运行结果是:

5,5

#include“stdio.h”

main()

{intv1=0,v2=0;

charc;

while((c=getchar())!

=’#’)

{switch(c)

{case‘a’:

case‘h’:

default:

v1++;

case‘o’:

v2++;

}

}

printf(“%d,%d\n”,v1,v2);

}

三、改错题

1.             for(i-0,i<5,i++)j++;

2.             while(j<10);{j++;i=j;}

3.             do{j++;a=j;}while(j<10)

4.             用下面程序来实现5!

ints=1,i=1;

while(i<=5)

s*=i;

i++;

5.下面程序段实现求半径r=1到r=10的圆面积,直到面积大于100为止。

For(r=1;r<=10;r++)

{s=3.14*r*r;

if(s>100)continue;

printf(“%f”,s);

}

四、编程题

1.             求1-2+3-4+…+99-100。

2.             任意输入10个数,分别计算输出其中的正数和负数之和。

3.             计算1---100以内的所有含6的数的和。

4.   输出所有的3位水仙花数。

所谓水仙花数是指所有位的数字的立方之和等于该数,例如:

153=13+33+53

5.             编写程序输出下面图形。

1

23

456

7890

6.             编写程序输出下面图形

*

***

*****

*******

*****

***

*

 

1、计算n的阶乘(n!

),n的取值在1~10之间。

分别使用while、do…while和for语句实现。

(三个程序)

给循环变量赋初值

循环条件

循环体

循环变量的增值

2、输入一行字符,分别统计输入了多少个字母、数字、空格和其他字符。

3、假设函数f(x)=3x2+2x+1,试利用for循环语句分别求出1<=x<=9的f

(1)~f(9)各函数值。

4、有分数序列2/1,3/2,5/3,8/5,13/8,21/13…求这个数列的前20项和。

(分析提示:

每个分子等于前一个数据分子与分母的和,每个分母等于前一个数据的分子)

5、输出显示1~100之间可以被n整除的所有整数,运行时n由键盘输入。

要求每一行显示5个数,并且统计一共有多少个整数能被n整除。

6、下面程序的功能是从键盘上输入若干学生的学习成绩,统计并输出最高成绩和最低成绩,当输入为负数时结束输入。

main()

{floatx,amax,amin;

scanf("%f",&x);

amax=x;

amin=x;

while(①)

{if(x>amax)amax=x;

if(②)amin=x;

scanf("%f",&x);

}

printf("\namax=%f\namin=%f\n",amax,amin);

}

7、使用循环语句输出以下图形

8、有一个数学等式:

AB*CD=BA*DC,式中的一个字母代表一位数字,试找出所有符合上述要求的乘积式并打印输出。

8、一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只,问一百只鸡中公鸡、母鸡、小鸡各多少)。

分析:

这是一个古典数学问题,设一百只鸡中公鸡、母鸡、小鸡分别为x,y,z,问题化为三元一次方程组:

100=x*5+y*3+z/3

100=x+y+z

这里x,y,z为正整数,且z是3的倍数;由于鸡和钱的总数都是100,可以确定x,y,z的取值范围:

1)x的取值范围为1~20

2)y的取值范围为1~33

3)z的取值范围为3~99,步长为3

对于这个问题我们可以用穷举的方法,遍历x,y,z的所有可能组合,最后得到问题的解。

数据要求

问题中的常量:

问题的输入:

问题的输出:

intx,y,z/*公鸡、母鸡、小鸡的只数*/

初始算法

1.初始化为1;

2.计算x循环,找到公鸡的只数;

3.计算y循环,找到母鸡的只数;

4.计算z循环,找到小鸡的只数;

5.结束,程序输出结果后退出。

算法细化

算法的步骤1实际上是分散在程序之中的,由于用的是for循环,很方便的初始条件放到了表达式之中了。

步骤2和3是按照步长1去寻找公鸡和母鸡的个数。

步骤4的细化

4.1z=1

4.2是否满足百钱,百鸡

4.2.1满足,输出最终百钱买到的百鸡的结果

4.2.2不满足,不做处理

4.3变量增加,这里注意步长为3

程序代码如下

#include"stdio.h"

main()

{

intx,y,z;

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

{

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

{

for(z=3;z<=99;z+=3)

{

if((5*x+3*y+z/3==100)&&(x+y+z==100))/*是否满足百钱和百鸡的条件*/printf("cock=%d,hen=%d,chicken=%d\n",x,y,z);

}

}

}

}

分析

程序运行结果如下:

cock=4,hen=8,chicken=78

cock=8,hen=11,chicken=81

cock=12,hen=4,chicken=84

对于这个问题实际上可以不用三重循环,而是用二重循环,因为公鸡和母鸡数确定后,小鸡数就定了,即。

请同学们自己分析二重循环和三重循环的运行次数,做为练习自己调试这一方法。

程序修改:

1、统计使用三重循环的循环次数

2、使用二重循环完成,并统计循环次数

#include

intmain()

{

inti1,i2,j1,j2,a,b,c,d;

for(i1=11;i1<=99;i1++)

for(j1=i1+1;j1<=99;j1++)

{a=i1/10;

b=i1%10;

c=j1/10;

d=j1%10;

if(a!

=b&&a!

=c&&a!

=d&&b!

=c&&b!

=d&&c!

=d)

{i2=b*10+a;

j2=d*10+c;}

if(i1*j1==i2*j2)

{printf("%d*%d=%d*%d\t",i1,j1,i2,j2);

}}

return0;

}

#include

voidmain()

{

inta,b,c,d;

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

for(b=1;b<=9;b++)

for(c=a+1;c<=9;c++)

for(d=1;d<=9;d++)

d{if((a*10+b)*(c*10+d)==(10*b+a)*(10*d+c))

if((a!

=b)&&(a!

=c)&&(a!

=d)&&(b!

=c)&&(b!

=d)&&(c!

=d))

printf("%d%d*%d%d=%d%d*%d%d\t",a,b,c,d,b,a,d,c);

}

}

#include

main()

{

inti,n,j=0;

printf("请输入一个整数n:

");

scanf("%d",&n);

if(n>=1&&n<=100)

{

printf("1~100间可以被%d整除的数是:

\n",n);

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

{printf("%-3d",i);

j++;

if(j%5==0)putchar('\n');

}}

else

printf("输入错误!

");

}

#include

intmain()

{intx,y;

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

{y=3*x*x+2*x+1;

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

}

#include

intmain()

{

intn,m=0,i=0;

printf("求1到100之间可以被n整除的整数\n");

printf("请输入整数n:

");

scanf("%d",&n);

if(n>=1&&n<=100)

{while(m<=100-n)

{m+=n;

i++;

printf("%3d,",m);

if(i%5==0)putchar('\n');

}

printf("\n1到100一共有%d个整数可以被%d整除\n",i,n);}

else

printf("输入错误");

}

#include

intmain()

{

intletters=0,space=0,digit=0,others=0;

charc;

printf("请输入一串字符:

");

for(;(c=getchar())!

='\n';)

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

letters++;

elseif(c=='')

space++;

elseif(c>='0'&&c<='9')

digit++;

else

others++;

}

printf("你一共输入了%d个字母,%d个空格,%d个数字,%d个其它字符\n",letters,space,digit,others);

}

使用数组

#include"string.h"

#include

voidmain()

{intk;

staticcharst[1];

gets(st);

k=strlen(st);

printf("%d",k);

}

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

当前位置:首页 > 高等教育 > 历史学

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

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