C++初学者循环结构
- 格式:doc
- 大小:52.00 KB
- 文档页数:5
知识聚焦5.1 goto 语句――无条件转移语句(不提倡使用)例子:求1~100所有数的累加和main( ){ int i , sum = 0;i = 1 ;loop :if ( i <= 100 ){ sum = sum + i;i ++;goto loop; }printf ( “%d”, sum ); }5.2 while 语句(当型循环)while (表达式){语句;}main( ){ int i ;sum = 0 ;i = 1;while ( i <= 100 ){ sum = sum + i;i ++; }printf ( “ %d “ , sum ) ;}5.3 do—while 循环(直到型循环)do { 语句 }while (表达式 ) ;main ( ){ int i , sum=0;i=1;do { sum=sum+i;i++;}while ( i<=100 );printf(“ %d”, sum );}5.4 for语句(既定循环语句)for( 表达式1;表达式2;表达式3 ){ 语句序列; }例如:for( i=0; i<=100; i++ )sum = sum + 1;执行过程:(1)先执行表达式1;(2)计算表达式2,为“真”则执行(3),为“假”则执行(6);(3)执行循环体;(4)计算表达式3;(5)返回(2);(6)结束循环。
注意:(1)三个表达式均可省略,但分号不可省。
(表达式2一般不省去,否则为死循环)。
(2) 表达式1和表达式3可以是逗号表达式。
例如:for( i=1,j=100 ; i<=j;i++, j-- )k = i + j ;(3)表达式2可为关系表达式或逻辑表达式,也可为数值或字符.例如 : 求n个自然数之和.main( ){ int i , sum ;int n ;sum=0 ;printf( “ n= “ ) ;scanf( “ %d “, &n ) ;for( i=1; i<=n; i++ )sum+=i ;printf(“sum=%d\n”,sum ) ;}输入 n=100输出:sum=50505.5 for循环嵌套(一个循环体内又包含另一个完整的循环结构)例如:打印九九乘法表#include “stdio.h”main( ){int i , j ;for( i=1 ; i<=9 ; i++ ){ printf( “\n” ) ;for( j=1 ; j<=i ; j++ )printf ( “%d %d=%d”, i, j,i*j ) ;}}5.6三种循环可以互相嵌套5.7 循环辅助控制1.break 语句可用于循环体中, 使程序从整个循环中退出2.continue语句可用于循环体中, 使程序从本次循环中退出 ,继续下一次循环 .例判素数程序#include “ math.h”main( ){int num,j,k;scanf(“%d”,&num);k=sqrt(num);j=2;leap=1;while(j<=k){ if (num%j==0){leap=0;break;}else j++;}if(leap) printf(“ %d issushu!\n”,num);else printf(“ %d i s notsushu!\n”,num);}Continue语句示例main( ){ int i;for(i=0;i<10;i++){if(i%2==0)continue;elseprintf(“ %4d”,i);}}结果: 1 3 5 7 9习题1.设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 2.假定a和b为int型变量,则执行以下语句后b的值为:a=1; b=10;do{ b-=a; a++; }while (b--<0);A) 9 B) -2 C) -1 D) 8 3.设j为int型变量,则下面for循环语句的执行结果是:for( j=10;j>3;j--){ if(j%3)j--;--j; --j;printf("%d ",j);}A) 6 B) 7 4 C) 8 D) 9 4.有以下程序main(){ int i, j;for(j=10;j<11;j++){ for(i=9;i<=j-1;i++)printf("%d",j); }}输出结果是:A) 11 B) 10 C) 9 D) 10115.设i,j,k均为int型变量,则执行完下面的for循环后,k的值为___,i值___,j的值___。
for(i=0,j=10;i<=j;i++,j--) k=i+j;6.当执行以下程序段时:A)循环体将执行一次B)循环体将执行两次C)循环体将执行无限次D)系统将提示有语法错误x=-1;do { x=x*x;} while(!x);7.执行以下程序后,输出的结果是A)-1 B)1 C)8D)0main(){ int y=10;do {y--;} while(--y);printf(“%d\n”,y--);}8.在下列选项中,没有构成死循环的程序段是:A)int i=100while (1){i=i%100+1;if(i>100)break;}B)for(;;);C)int k=1000;do{++k;} while (k>=1000);D)int s=36;while(s);--s;9.执行语句:for(i=1;i++<4;)后;变量i的值是A)3 B)4 C)5 D)不定10.以下程序的输出结果是A)x=4 B)x=8 C)x=6 D)x=12main( ){ int i,j,x=0;for(i=0,i<2;i++){ x ++;for(j=0;j<3;j++){ if(j%2)continue;x++;}x++;}printf(“x=%d\n”,x);}11.运行以下程序后,如果从键盘上输入65 14<回车>,则输出结果为A)m=3 B)m=2 C)m=1 D)m=0main ( ){int m,n;printf{“Enter m,n:”};scanf(“%d%d”,&m,&n);while(m!=n){while(m>n)m-=n;while(n>m)n-=m;}printf(“m=%d\n”,m);}12. 以下循环体的执行次数是:,运行结果是:A) 3 B) 2 C) 1 D) 0main(){ int i,j;for(i=0,j=1; i<=j+1; i+=2,j--)printf("%d \n",i);}13.以下叙述正确的是A) do-while语句构成的循环不能用其它语句构成的循环来代替。
B) do-while语句构成的循环只能用break语句退出。
C) 用do-while语句构成的循环,在while后的表达式为非零时结束循环。
D) 用do-while语句构成的循环,在while后的表达式为零时结束循环。
14 以下程序段的执行结果是A) a=12 y=12 B) a=12 y=12a=14 y=16 a=16 y=28a=16 y=20 a=18 y=24C) a=12 y=12 D) a=12 y=12a=14 y=26 a=14 y=44 int a, y;a=10; y=0;do{ a+=2; y+=a;printf("a=%d y=%d\n",a,y);if(y>20) break;}while(a==14);15.下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。
#includemain(){ int a, b, c, i;a=c=0;for(i=0; [?] ;i+=2){ a+=i;[?] ;c+=b;}printf("偶数之和=%d\n",a);printf("奇数之和=%d\n",c-11);}16.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。
#includemain(){ int i, j;for(i=0; [?] ; i++){ j=i*10+6;if( [?] ) continue;printf("%d",j);}}17.有如下程序main(){ int i,sum;for(i=1;i<=3;sum++) sum+=i;printf(“%d\n”,sum);}该程序的执行结果是A) 6 B) 3 C) 死循环 D) 018. 有如下程序main(){ int x=23;do{ printf(“%d”,x--);}while(!x);}该程序的执行结果是A) 22 B) 23 C) 不输出任何内容D) 陷入死循环19. 有如下程序main(){ int n=9;while(n>6) {n--;printf(“%d”,n);}}该程序段的输出结果是A) 987 B) 876 C) 8765 D) 987620. 要使以下程序段输出10个整数,请填入一个整数。
for(i=0;i<=[?] ;printf(“%d\n”,i+=2));21. 若输入字符串:abcde<回车>,则以下while循环体将执行 [0] 次。
while((ch=getchar())==’e’)printf(“*”);22 有以下程序段int k=0while(k==1)k++;while 循环执行的次数是A) 无限次 B) 有语法错,不能执行C)一次也不执行 D) 执行1次23 以下程序执行后sum的值是:A)15 B)14 C) 不确定 D)0main(){ int i , sum;for(i=1;i<6;i++) sum+=i;printf("%d\n",sum);}24 有以下程序段int x=3do{ printf("%d",x-=2); }while (!(--x));其输出结果是A) 1 B) 3 0 C) 1 -2 D) 死循环25 t为int类型,进人下面的循环之前,t的值为0while( t=l ){ …… }则以下叙述中正确的是A) 循环控制表达式的值为0 B) 循环控制表达式的值为1C) 循环控制表达式不合法 D) 以上说法都不对26.以下程序的输出结果是main(){ int num= 0;while(num<=2){ num++; printf("%d\n",num);}}A} 1 B} 1 C}1 D} l2 2 23 3427 以下程序的输出结果是:main(){ int a, b;for(a=1, b=1; a<=100; a++){ if(b>=10) break;if (b%3==1){ b+=3; continue; }}printf("%d\n",a);}A) 101 B) 6 C) 5 D) 428.以下程序运行后的输出结果是【?】。