循环结构程序设计练习题
- 格式:doc
- 大小:67.00 KB
- 文档页数:8
实验3 循环结构程序设计一.实验目的:1.掌握使用while 语句,do-while 语句和for 语句实现循环的方法。
2.掌握在循环结构中使用break 与continue 语句的方法。
3.掌握多重循环的使用方法。
二.实验内容:1.编写程序输出半径为1到15的圆的面积,若面积在30到100之间则予以输出,否则,不予输出。
2.打印出所有“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方之和正好等于该数本身。
例如:153是一个“水仙花数”,因为153=13+53+33。
3.编写程序,分行输出斐波那契序列的前20项(每行5个数)。
说明:斐波那契序列:1,1,2,3,5,8,13,21,……4.编写程序,输出“九九乘法口诀表”。
5.编写程序,分行输出100以内所有的素数(每行5个数)。
6.有两个红球、三个黄球、四个白球,任意取五个球,其中必须有一个黄球,编程输出所有可能的方案。
7.编写程序求解sn=a+aa+…+a …a,其中a 是1-9中的一个数字。
n 为一正整数,a 和n 均从键盘输入。
(例如输入n 为4,a 为2,sn=2+22+222+2222)8.编程统计从键盘输入的字符中数字字符的个数,用换行符结束循环。
9. 编写程序,输出200以内所有能被7整除的数。
10. 编写程序,求1~1000之间能被13整除的最大的那个数。
11. 找出若干个非零数中的最小值m 以及它们的平均值a 。
要求:从键盘输入若干个数,每次输入一个赋给变量x ,x 为零时,结束输入。
12. 从键盘输入整数 n ,输出 1+3+5+7+……前 n 项的和。
(n<=100)13. 编写一个程序,求s=1+(1+2)+(1+2+3)+…+(1+2+3+…+n)的值。
14. 编写一个程序,用户输入一个正整数,把它的各位数字前后颠倒一下,并输出颠倒后的结果。
15. 编写一个程序,求出200到300之间的数,且满足条件:它们三个数字之积为42,三个数字之和为12。
循环程序设计习题与答案模块三循环程序设计习题及答案一、填空题1、当在数据处理中要重复执行相同的操作时,宜采用程序结构来实现。
2、循环的 3 要素是、、。
3、在循环语句体中包含另一个循环语句的用法称为。
4、执行循环语句体中的break 语句后将使用包含它的循环语句。
5 、要结束当前正在执行循环体语句而直接进入下一循环周期,需要执行语句。
6、在for 语句中表达式允许省略,但不能少,语句for( ; ;) ;构成的是循环。
7、在for 语句中,省略表达式 2 时,则循环为循环。
8、执行语句for(i=1;i++<4; );后变量i 的值是。
9、要使用循环程序提前结束本次循环周期并开始下一个循环周期,应在循环体内有条件使用语句。
10、在每次循环周期均要执行一次的语句,称为。
11、for 语句括号内的3 个表达式的作用分别是、和循环控制变量的更新。
二、选择题1、若k 为整形变量,则while 循环共循环()。
k=5;while(k>=0) k-1;A、无限循环B、6 次C、5 次D、4 次2、与while( ! n) ; 中表达式!dn 等价的是()。
A、dn>=0 B 、dn!=0C、dn == 0D、dn != 13、以下程序段,while 循环执行的次数是()int k=0;while( k == 1) k++;A、无限次B、有语法错,不能执行C、一次也不执行D、执行 1 次4、在C语言中,当do while 语句中的条件为()时,结束该循环。
A、0B、1C、TRUED、非05、下面程序段的输出结果是()do{ b-=a;a++;}while(b--<0);A、10,-1B、2,8C、9,0D、4,-36、以下描述正确的是()A、由于do while 循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句。
B、do while 循环由do 开始,用while 结束,在while( 表达式)后面不能写分号C、在do while 循环体中,一定要有能使while 后面匠值变为零的操作D、do while 循环中,根据情况可以省略while7、若有如下程序段,其中s、a、b、c 均已定义为整型变量,且a、c 均已赋值(c大于0)。
2015-2016(2)循环结构练习题一、单选题(共40题,共100分)1. 以下正确的描述是()(2分)语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循环体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出时,只能使用goto语句标准答案:B\考生答案:2. 下面的关键字中,不能够从循环体中跳出循环体外的是()(2分)标准答案:D考生答案:3. 以下叙述中错误的是()(2分)A.语句标号是由合法的标识符后面加一个冒号构成语句的作用是把程序的执行转向语句标号所在的位置语句必须与语句标号在同一个函数内D.结构化程序设计主张使用goto语句,使用goto语句的程序可读性强#标准答案:D考生答案:4. 有以下程序段,while 循环执行的次数是()int k=0;while(k=1)k++; (2分)A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次标准答案:A考生答案:5. 运行以下程序的结果为()·main(){int num=0;while (num<=2){num++;printf("%d",num);}} (2分)标准答案:B>考生答案:6. 下述程序的输出结果是()。
main(){ int Y=100;while(Y--);printf("y=%d",Y);(2分)=0 =1 =随机值 =-1标准答案:D;考生答案:7. 执行下面的程序后的输出结果为()int x,y,z;x=20,y=40,z=15;while(y>x)x+=4,y-=4;z/=2;printf("%d,%d,%d",x,y,z); (2分),36,30 ,8,7 ,28,7 ,28,标准答案:C?考生答案:8. 以下程序段的输出结果是()int x=0,y=5,z=3;while(z-->0&&++x<5) y=y-1;printf("%d,%d,%d\n",x,y,z); (2分),2,0 ,2,-1 ,3,-1 ,-2,-5标准答案:B考生答案:9. 下述语句执行后,变量k的值是()int k=1;~while(k++<10); (2分)D.此为无限循环,值不定标准答案:B考生答案:10. 下面程序的运行结果是()。
第 5 章循环结构程序设计练习题1.单项选择题( 1)语句 while (!e);中的条件!e等价于A。
A. e==0B. e!=1C. e!=0D. ~e( 2)下面有关for循环的正确描述是D。
A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环体语句,后判定表达式C. 在 for循环中,不能用break 语句跳出循环体D. for循环体语句中,可以包含多条语句,但要用花括号括起来(3)C语言中D。
A.不能使用do-while语句构成的循环B. do-while 语句构成的循环必须用break 语句才能退出C. do-while 语句构成的循环,当while 语句中的表达式值为非零时结束循环D. do-while 语句构成的循环,当while 语句中的表达式值为零时结束循环( 4) C 语言中 while 和 do-while 循环的主要区别是A 。
A. do-while的循环体至少无条件执行一次B. while的循环控制条件比do-while的循环控制条件严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句( 5)以下程序段C。
int x=-1;do{x=x*x;}while (!x);A.是死循环B. 循环执行二次C. 循环执行一次D. 有语法错误( 6)下列语句段中不是死循环的是__C__。
A.i=100;while (1){i=i%100+1;if (i==20) break;}B.for (i=1;;i++)sum=sum+1;C.k=0;do{++k;} while (k<=0);D.s=3379;while (s++%2+3%2)s++;( 7)与以下程序段等价的是__A__。
while (a){if (b) continue;c;}A.while (a)B.while (c){ if (!b) c; }{ if (!b) break; c; }C. while (c)D. while (a){ if (b) c; }{ if (b) break; c; }( 8)以下程序的输出结果是_B___。
第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是( D )。
main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是( A )。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用break跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是( d )。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、以下程序程序的执行后的输出结果是( c )。
main(){int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);}A.7 5 3B. 3 5 7C.3 6 9D.7 5 15、以下程序运行后的输出结果是( A )。
void fun(char*s){ while(*s){ if(*s%2==0) printf(“%c”,*s); s++;}}main(){ char a[]={“good”};fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97A.dB.goC.godD.good6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。
A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为( C )。
第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是( D )。
main( ){ int i,s=0; for(i=1;i<10;i+=2)s+=i+1;printf("%d\n",s);}A.自然数 1~9的累加和B.自然数 1~10 的累加和C.自然数 1~9中的奇数之和D.自然数 1~10 中的偶数之和2、以下关于 for 语句的说法不正确的是( A )。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用 break 跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若 i和 k 都是 int 类型变量,有以下 for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是(d)。
A. 循环体执行两次B.循环体执行一次C.循环体一次也不执行D. 构成无限循环4、以下程序程序的执行后的输出结果是(c)。
main(){int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++) printf(“%d”,t[2 -i][i]);}A.753B.357C.369D.7515、以下程序运行后的输出结果是( A )。
void fun(char*s){ while(*s){ if(*s%2==0)printf(“%c”,*s);s++;}}main(){ char a[]={“good”};fun( a) ;printf(“ n”);}注意:字母 a 的 ASCⅡ码值为 97A.dB.goC.godD.good6、已知 int t=0 ; while ( t=1 ){...}则以下叙述正确的是( B)。
A)循环控制表达式的值为 0B)循环控制表达式的值为 1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while (!x!=0 ) s+=++x;printf ( "%d",s );则A)运行程序段后输出0B)运行程序段后输出 1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设 i ,j ,k 均为 int型变量,则执行完下面的 for 语句后, k 的值为( C)。
第3章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例1】若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c 均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是_______。
A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;✧考点:本例考查for循环。
✧分析:初始赋值时s=a,那么s的值一定与a有关,C、D答案中不含a所以排除掉。
只用清楚for循环的次数,不管b以前的值为多少,第一次循环时b=1,当b>c时循环结束,那么显然s要加c次1。
所以s的值为a与c的和。
✧答案:B【例2】设x和y均为int型变量,则执行下面的循环后,y值为。
for(y=1,x=1;y<=50;y++){if(x>=10) break;if(x%2==1){x+=5;continue;}x-=3;}A) 2 B) 4 C) 6 D) 8✧考点:本例考查for循环中break和continue的用法,以及区别。
✧分析:break用在循环中,只能退出一层循环。
尤其是在嵌套循环中,只能退出它所在的那一层循环。
不能期望用break从最内层循环一下子退出最外层循环(可以用goto实现)。
continue语句只能用在循环中,它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测试。
语句“if(x>=10) break;”中的break只有当x>=10时,才会执行,并且跳出for循环;语句“x+=5;continue;”是每次执行完一次跳过其后面的语句,直接将控制转移到下一轮循环条件的测试for(y=1,x=1;y<=50;y++)中。
✧答案:C【例3】以下程序中,while循环的循环次数是_______。
main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}A) 1 B) 10 C) 6 D) 死循环,不能确定次数✧考点:本例考查while循环的用法,以及continue和break的分别。
第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是()。
main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是()。
A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用break跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是()。
A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、已知 int t=0; while(t=1){...} 则以下叙述正确的是()。
A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对5、设有以下程序段int x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次6、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为()。
for(i=0, j=10; i<=j; i++, j- -) k=i+j;A.6B.9C.10D.117、C语言中,break; 语句可以用于循环语句和( )语句中。
A.ifB.switchC.forD.while8、for(i=0; i<=15; i++) printf("%d", i ); 循环结束后,i 的值为()。
A.14B.15C.16D.179、与语句“while(!x)”等价的语句是()。
A. while(x==0)B. while(x!=0)C. while(x==1)D. while(x!=1)10、下述程序段中,while循环执行次数是()。
int k=0;while(k=1) k++;A.无限次B. 有语法错误,不能执行C.一次也不执行D. 执行一次11、以下程序中,while循环的次数是()。
#include <stdio.h>void main( ){int i=0;while(i<10) { if(i<1) continue; if(i= =5)break; i++;}}A. 1B. 死循环,不能确定次数C. 6D. 1012.下面程序段int k=2;while (k=0) {printf(“%d”,k);k--;}则下面描述中正确的是。
A)while循环执行10次 B)循环是无限循环C)循环题语句一次也不执行 D)循环体语句执行一次13.以下程序段的循环次数是。
for (i=2; i==0; ) printf(“%d” , i--) ;A)无限次 B)0次 C)1次 D)2次14. int i=100;以下不是死循环的程序段是。
A)while (1) {i=i%100+1 ;if (i>100) break ;} B)for ( ; ; ) ;C) int k=0; do { ++k; } while (k>=0); D)int s=36;while(s) ;--s ;15.下述程序段的运行结果是。
int a=1,b=2, c=3, t;while (a<b<c) {t=a; a=b; b=t; c--;} printf(“%d,%d,%d”,a,b,c);A)1,2,0 B)2,1,0 C)1,2,1 D)2,1,116.下面程序的功能是从键盘输入一组字符,从中统计大写字母和小写字母的个数,选择填空。
main ( ){ int m=0,n=0;char c;while ((【】) ! ’\n’){if (c>=’A’ && c<=’Z’) m++;if (c>=’a’ && c<=’z’) n++;} }A)c=getchar( ) B)getchar( ) C)c==getchar( ) D)scanf(“%c”,&c)17.下述语句执行后,变量k的值是。
int k=1;while (k++<10);A)10 B)11 C)9 D)无限循环,值不定18.下面for循环语句。
int i,k;for (i=0, k=-1; k=1; i++, k++)printf(“***”);A)判断循环结束的条件非法 B)是无限循环C)只循环一次 D)一次也不循环19. 以下for循环的执行次数是。
for (x=0,y=0; (y=123) && (x<4) ; x++) ;A)无限循环 B)循环次数不定 C)4次 D)3次20.以下是死循环的程序段是。
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--);21.以下程序段。
x=-1;do{ x=x*x; }while (!x);A)是死循环 B)循环执行2次 C)循环执行1次 D)有语法错误22.下面程序的功能是在输入的一批正数中求最大者,输入0结束循环,选择填空。
main ( ){ int a,max=0;scanf(“%d”,&a);while (【】) { if (max<a) max=a ; scanf (“%d”,&a); } printf(“%d”,max);}A)a==0 B)a C)!a==1 D)!a23.以下不是死循环的语句是。
A)for (y=9,x=1;x>++y;x=i++) i=x ;B)for ( ; ; x++=i ) ;C)while (1) { x++ ; }D)for (i=10 ; ; i--) sum+=i ;读程题:1.以下程序的输出结果是。
main(){ int i, a[6]={2,3,4,5,6,7};for(i=1; i<6; i+=2)printf("%d ", a[i]);}2.写出下面程序运行的结果。
main ( ){ int i=5 ;for (; i<5 ;){ i++;if(i%4==0)printf(“%-2d”,i);else continue;}}3.写出下面程序运行的结果。
main ( ){ int a,b;for (a=1,b=1 ; a<=100 ; a++) {if (b>=20) break;if (b%3==1) { b+=3 ; continue ; }b-=5;}printf(“%d\n”,a);}4.写出下面程序运行的结果。
main ( ){ int k=1,n=263 ;do { k*= n%10 ; n/=10 ; } while (n) ;printf(“%d\n”,k);}5.若执行以下程序时从键盘上输入3和4,则输出结果是。
main( ){ int a,b,s;scanf("%d%d",&a,&b);s=a;if(a<b) s=b;s*=s;printf("%d\n",s);}6.写出下面程序运行的结果。
main ( ){ int i ;for(i=1;i<10;i++){if(i%3) i++;++i ;printf(“%d ”,i) ;}}编程题:1.编写程序输出如下图形。
***************2.鸡兔问题:假设鸡兔共有30只,脚数共有90只,利用循环编写一个程序求出鸡和兔各有多少只。
3.判断从键盘输入的数m 是否为素数(素数:只能被1和本身整除的数)。
4.利用循环从键盘输入100个数,找出其中的最小值。
5.编程求1-21+31-41+……+991-1001的值。
6.编程求s=1+(1+2)+(1+2+3)+……+(1+2+3+……+n)的值。
7.输出100-999之间的所有水仙花数,每行输出5个(水仙花数:三位数的各位数字的立方之和等于这个三位数本身,如153=1*1*1+5*5*5+3*3*3)。
8.编程打印一下图形(行n 的值由键盘输入)。
****************************文件、结构体、位运算1、左移运算:int a=4,c=a>>1;变量c 的值是()。
A.2B.8C. 9D. 02、在位运算中,操作数每右移一位,其结果相当于()。
A.操作数乘以2B.操作数除以2C. 操作数乘以4D. 操作数除以23、表达式“12|012”的值是()。
A.1B.0C. 14D. 124.以下程序的输出结果是()。
main(){int a,b;a=4|3;b=4&3;printf(“%d %d”,a,b);}A.7 0B.0 7C. 1 1D. 43 05.表达式0x13|0x17的值是()。
A.0x13B.0x17C. 0xE8D. 0xC86.表达式19&23的值是()。
A.0x7B.0x13C. 0xf8D. 0xec7、若有以下说明:struct st{int a;int b[2];}a;则下述正确的是(已知int型变量占两个字节)()。
A.结构体变量a与结构体成员a同名,定义非法。
B.程序只在执行到该定义是才为结构体变量a分配存储单元。
C.程序运行时为结构体变量a分配六个自己存储单元D.以上说法都不对8、若有以下定义和语句:struct student{int num;char name[12];struct{ int year;int month;int day;} birth;}struct student s;设变量s中“生日”是“2013年1月1日”,下列对“生日”的正确赋值方式是()。
A.year=2013;month=1;day=1;B.birth.year=2013; birth.month=1; birth.day=1;C.s.year=2013; s.month=1; s.day=1;D.s.birth.year=2013; s.birth.month=1; s.birth.day=1;9、若有以下定义和语句:struct st{int x;char y;}s;则下列赋值正确的是()。