第5章循环控制结构作业.docx
《第5章循环控制结构作业.docx》由会员分享,可在线阅读,更多相关《第5章循环控制结构作业.docx(17页珍藏版)》请在冰豆网上搜索。
![第5章循环控制结构作业.docx](https://file1.bdocx.com/fileroot1/2023-1/6/1dd1b720-3247-49ab-8cd0-fa6df2ebea6a/1dd1b720-3247-49ab-8cd0-fa6df2ebea6a1.gif)
第5章循环控制结构作业
第5章循环控制结构
一、单选题
1、下列循环的输出结果是(B)
#include
intmain()
{intn=10
while(n>7)
{n--;
printf("%d\n",n);
}
}
A.1098 B.987 C.10987 D.9876
2、以下程序的输出结果是(A)
#include
intmain()
{intn=4;
while(n--)printf("%d",--n);
}
A.20 B.31 C.321 D.210
3、设有以下程序段,则下面描述中正确的是(C)
#include
intmain()
{intk=10;
while(k==0)k=k-1;}
A.while循环执行10次B.循环是无限循环
C.循环体语句一次也不执行D.循环体语句执行一次
4、有以下程序段,while循环执行的次数是(C)
#include
intmain()
{intk=0;
while(k=1)k++;}
A.无限次 B.有语法错,不能执行 C.一次也不执行 D.执行一次
5、设K为整形,则下面的while循环执行(B)次
#include
intmain()
{intk=2;
while(k==0){printf("%d",k);k--;}
printf("\n");
}
A.无限次B.0次C.1次D.2次
6、读程序,输出结果是(C)
#include
intmain()
{intnum=0;
while(num<=2)
{num++;printf("%d",num);}
}
A.1B.22C.123D.1234
7、下面程序段的运行结果是(A)
#include
intmain()
{inta,b,c;
a=1;b=2;c=2;21112
while(a
printf("%d,%d,%d",a,b,c);
}
A.1,2,0B.2,1,0C.1,2,1D.2,1,1
8、假定a和b为int型变量,则执行以下语句后b的值为D
#include
intmain()
{inta=1,b=10;
do
{b=b-a;a++;}
while(b-->0);
}
A.-3B.-2C.-1D.-4
9、以下程序段____C__
#include
intmain()
{intx=-1;
do{x=x*x;}
while(!
x);
}
A.是死循环 B.循环执行二次 C.循环执行一次 D.有语法错误
10、有如下程序,该程序的执行结果是(B)
#include
intmain()
{intx=23;
doprintf("%d",x--);
while(!
x);
}
A.321 B.23 C.不输出任何内容 D.陷入死循环
11、执行以下程序后,输出的结果是(D)
#include
intmain()
{inty=10;
do{y--;}
while(--y);
printf("%d\n",y--);
}
A.-1B.1C.8D.0
12、若输入字符串:
abcde<回车>,则输出为(D)
#include
intmain()
{charch;
while((ch=getchar())=='e')printf("*");
}
A.*B.***C.****D.空
13、如果输入为:
ABCdef,执行下面一段程序后,则输出为(B)
#include
intmain()
{charch;
while((ch=getchar())!
='\n')
{if(ch>='A'&&ch<='Z')ch=ch+32;
elseif(ch>='a'&&ch<'z')ch=ch-32;
printf("%c",ch);
}
printf("\n");
}
A.ABCdefB.abcDEFC.abcD.DEF
14、以下描述中正确的是(C)
A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号
C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作
D.do-while循环中,根据情况可以省略while
15、以下叙述正确的是(D)
A.do-while语句构成的循环不能用其它语句构成的循环来代替。
B.do-while语句构成的循环只能用break语句退出。
C.用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D.用do-while语句构成的循环,在while后的表达式为零时结束循环。
918
16、以下程序的输出结果是(D)
#include
intmain()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y) ;
}
A.10192 B.9876 C.10990 D.101091
17、若i为整型变量,则以下循环执行次数是(B)
#include
intmain()
{inti;
for(i=2;i==0;)printf("%d",i--);
}
A.无限次B.0次C.1次D.2次
18、以下循环体的执行次数是(C)
#include
intmain()
{inti,j;
for(i=0,j=1;i<=j+1;i+=2,j--)0
printf("%d\n",i);
}
A.3B.2C.1D.0
19、设i,j为int型变量,则下面for循环语句的执行结果是(B)
#include
intmain()
{inti;
for(i=10,j=0;j<2;j++)
{if(i%3)i--;--i;--i;
printf("%d",i)}
}
A.63B.74C.62D.73
20、下面程序的输出是(B)
#include
intmain()
{inty=9;
for(;y>0;y--)
if(y%3==0)
{printf("%d",--y);continue;}
}
A.741B.852C.963D.875421
21、有以下程序,其输出结果是(C)
#include
intmain()
{intx,i;
for(i=1;i<=50;i++)
{x=i;
if(x%2==0)
if(x%3==0)
if(x%7==0)
printf("%d",i);
}
}
A.28B.27C.42D.41
22、执行下面的程序后,a的值为(C)
#include
intmain()
{inta,b;
for(a=1,b=1;a<=100;a++)
{if(b>=20)break;
if(b%3==1){b-=2;continue;}b=4710
b+=5;
printf(“%d%d”,a,b);
}
}
A.11B.15C.12D.13
23、执行下面的程序后,a的值为(B)
#include
intmain()
{inta,b;
for(a=1,b=1;a<100;a++)
{if(b>=20)break;
if(b%3==1){b+=3;continue;}
b-=5;
}
}
A.7B.8C.9D.10
24、若x是int型变量,以下程序段的输出结果是()。
#include
intmain()
{intx;
for(x=3;x<6;x++)
printf((x%2)?
(”**%d”):
(”##%d\n”),x);
}
A.**3##4**5B.##3**4##5
C.##3**4##5D.**3##4**5
25、以下程序的输出结果是()
#include
intmain()
{inti;
for(i=1;i<6;i++)
{if(i%2){printf("#");continue;}
printf("*");}
printf("\n");
}
A.#*#*# B.##### C.***** D.*#*#*
26、下面程序段的运行结果是()
#include
intmain()
{intx=3;
do{pfintf(“*_*”);x--;}
while(x);
}
A.*_* B.*** C.**_**_** D.*-**_**_*
27、以下程序的输出结果是()
#include
intmain()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:
a+=2;
case1:
case2:
a+=3;
default:
a+=5;}
}
printf("%d\n",a);
}
A.31B.13C.10D.20
28、运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为()
#include
intmain()
{intv1=0,v2=0;
charch;
while((ch=getchar())!
='#')
switch(ch)
{case'a':
case'h':
default:
v1++;
case'0':
v2++
}
}
A.2,0 B.5,0 C.5,5 D.2,5
29、若i,j已经定义为int类型,则以下程序段中内循环总的执行次数是()
#include
intmain()
{inti,j;
for(i=5;i>0;i--)
for(j=0;j<4;j++){...}
}
A.20B.24C.25D.30
30、有以下程序,输出结果是()
#include
intmain()
{inti,j;
for(j=10;j<11;j++)
{for(i=9;iif(!
(j%i))break;
if(i=j-1)printf("%d",j);
}
}
A.11 B.10 C.9 D.1011
二、分析程序
1、输入1,输出()
#include
intmain()
{intsum=0,i;
scanf("%d",&i);
while(i<=10)
{sum=sum+i;
i++;}
printf("%d",sum);
}
2、以下程序的输出结果是()
#include
intmain()
{intX=15;
while(X>10&&x<50)
{X++;
if(x/3){X++;break;}
elsecontinue;
}
printf(”%d\n”,X);
}
3、以下程序的输出结果是()
#include
intmain()
{ints,i;
for(s=0,i=1;i<3;i++,s+=i)
printf("%d\n",s);
}
4、以下程序的输出结果是()
#include
intmain()
{intx=2;
while(x--);
printf("%d\n",x);
}
5、下述程序的运行结果是()
#include
intmain()
{ints=0,k;
for(k=7;k>4;k--)
{switch(k)
{case1:
case4:
case7:
S++;break;
case2:
case3:
case6:
break;
case0:
case5:
s+=2;break;
}
}
}
6、设i,j,k均为int型变量,则执行完下面的for循环后,k的值为()
#include
intmain()
{inti,j;
for(i=0,j=10;i<=j;i++,j--)
k=i+j;
}
7、程序运行后,如果从键盘上输入1298;则输出结果为()
#include
intmain()
{intn1,n2;
scanf("%d",&n2);
while(n2!
=0)
{n1=n2%10;
n2=n2/10;
printf("%d",n1);
}
}
三、程序填空
1、求输入100个数中正数的个数及其平均值
#include
intmain()
{inti,n;
floatsum,f;
n=0;
1;
for(i=0;i<=100,i++)
{printf("enterarealnumber:
";
scanf("%f",&f));
if2
continue;
3;
n++;}
printf("sum=%f",sum);
printf("arerage=%f",sum/n);}
}
2、下面程序的功能是:
计算1到10之间奇数之和及偶数之和,请填空。
#include
#include
intmain()
{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",c-11);
}
3、读入一个1到9的数a,求s=a+aa+aaa+…+aa…a(共20项)。
请对下述程序填空,其中temp保存当前处理项aa…a。
(每个空分别以序号标注,如:
(1)____)
#include
#include
intmain()
{inti;
longa,s,temp;
s=temp=0;
printf("Pleaseenteranumber(1-9)");
scanf
(1);
s=a;
for(i=1;2;3)
4、读以下程序说明和c程序填空
程序说明:
本程序判断m是否为素数。
程序:
#include
intmain()
{intm,i,k;
scanf("%d",1);
k=____2______;
for(i=2;i<=k;i++)
if(____3_______)break;
if(____4______)printf("%d是素数\n",m);
elseprintf("%d不是素数\n",m);
}
5、下列程序的功能是:
求100-200之间的不能被3整除的数输出,请填空:
#include
intmain()
{intn;
_____1_____;
{if(n%3==0)
continue;
printf("%d",n);
}}
四、程序设计(挑简单的做,不会做得可以不做)
1、输出99乘法表。
2、输入一个正整数,各输出n行的正(倒)三角形宝塔图案。
3、打印出如下图案(菱形)。
提示:
先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。
4、输入n个整数,求这n个数中偶数的平均值并输出。
5、编程序求1~55的平方根的和并输出结果。
(保留小数点两位)
6、编程序求1~50所有整数的平方和并输出结果。
7、编程序求2+4+8+16+32+…这样的数之和。
如果累加数大于5000时,则程序终止并输出结果。
8、求1到20的阶乘的和。
9、编程序求出1-4000以内能被3或者11整除数的个数。
10、输出1~999中能被3整除,而且至少有一位数字是5的所有数字。
11、一个整数等于该数所有因子之和,则称该数是一个完数。
例如,6和28都是完数,因为6=1+2+3,28=1+2+4+7+14。
输出1000以内所有的完数。
12、本程序演示打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个“水仙花数”,因为153=1^3+5^3+3^3。
试求有多少个水仙花数?
利用for循环控制100-999个数,每个数分解出个位,十位,百位。
13、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。
14、编写程序,将一个不大于256的十进制正整数转化为8位的二进制数,若不足8位,则在前面补0,例如十进制数2转化位8位二进制数后是00000010,37转化后是00100101。
试求出十进制数5、23、189转化位8位二进制分别是多少?
(要求必须使用循环语句实现)
15、设某国今年的国民生产总值为45600亿元,若今后每年以8%的增长率增长,计算多少年后能实现国民生产总值翻两番?
16、有36个学生一起买小吃,共花钱120元,其中每个大学生花4元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生为0的解)?
17、把18元钱分成一元、二元和五元的纸币且纸币数共为10张的分法有多少种?
(注:
在兑换中一元、二元、五元的纸币数可以为0)。
18、爱因斯坦数学题。
有一条长阶,若每步跨2阶,则最后剩1阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨6阶,则最后剩5阶;若每步跨7阶,则正好1阶不剩。
求台阶共有多少阶。
19、猴子吃桃问题。
猴子第1天摘下若干桃子,当即吃了一半,还不过瘾,有多吃了一个;第2天早上又将剩下的桃子吃掉一半,又多吃一个。
以后每天早上都吃了前一天的一半零一个。
到第10天早上再想吃时,就只剩下一个桃子了。
求第一天共摘了多少个桃子。
20、
用二分法求下面方程在(-10,10)之间的根: