C语言循环习题答案.docx
- 文档编号:9137962
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:19
- 大小:62.69KB
C语言循环习题答案.docx
《C语言循环习题答案.docx》由会员分享,可在线阅读,更多相关《C语言循环习题答案.docx(19页珍藏版)》请在冰豆网上搜索。
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); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 循环 习题 答案