循环结构 : while循环 do...while循环(几乎不用) for循环(使用最多)
特点:在给定的条件成立时,反复执行某程序段,直到条件不成立为止。
给定的条件为循环条件,反复执行的程序段位循环体。
一、while循环
while(条件表达式){
循环语句;
}
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { int i = 0; while (i<10) { printf("hello,word!\n"); i++; } return 0; }
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 //用while打印出1~100之间7的倍数。 6 // int i = 1,d; 7 // while (i<=100) { 8 // d = i%7; 9 // if (d == 0 ) { 10 // printf("%d\t",i); 11 // } 12 // 13 // i++; 14 // } 15 //用while打印出1~100之间个位为7的数 16 // int i = 1,d; 17 // while (i<=100) { 18 // d = i%10; 19 // if (d == 7 ) { 20 // printf("%d\t",i); 21 // } 22 // 23 // i++; 24 // } 25 //用while打印出1~100之间⼗十位为7的数 26 // int i = 1,d; 27 // while (i<=100) { 28 // d = i/10; 29 // if (d == 7 ) { 30 // printf("%d\t",i); 31 // } 32 // 33 // i++; 34 // } 35 //用while打印出1~100之间不是7的倍数并且 不包含7的数 36 int i = 1,d,a,b; 37 while (i<=100) { 38 d = i/10; 39 a = i%7; 40 b = i%10; 41 if (d != 7 &&a!=0 &&b!=7) { 42 printf("%d\t",i); 43 } 44 45 i++; 46 } 47 48 return 0; 49 }
随机数 arc4random()-----返回一个伪随机数
//得到0到30之间的数 printf("%d",arc4random()%31);
//得到10到40之间的数
printf("%d",arc4random()%31+10);
取(m,n)之间的随机数 printf("%d",arc4random()%(n-m+1)+m);
1 // 用户从控制台输⼊入⼀一个n,⽤用while打印n个随机数, 范围为[30~70],找出n个随机数中的最⼤大值 2 #import <Foundation/Foundation.h> 3 4 int main(int argc, const char * argv[]) 5 { 6 int n,i,max=0,b; 7 printf("输入一个数n:"); 8 scanf("%d",&n); 9 while (i<n) { 10 b = arc4random()%41+30; 11 printf("%d ",b); 12 if (max < b) { 13 max = b; 14 } 15 i++; 16 17 18 } 19 printf("\nmax=%d",max); 20 return 0; 21 }
break 在switch语句中,break是跳出switch语句块,执行switch语句块下面的语句
在循环中,break主要作用是跳出本层循环,执行循环后面的语句,通常break语句总是与if语句联在一起
找bug:1.打断点2.看log日志
continue 语句一般会跳过某次循环的部分内容,继续下一次循环,不会结束循环。
1 //#import <Foundation/Foundation.h> 2 // 3 //int main(int argc, const char * argv[]) 4 //{ 5 // int i=0; 6 // 7 // while (i<10) { 8 // printf("%d ",i); 9 // 10 // i++; 11 // if (i == 8) { 12 // break; 13 // } 14 // 15 // } 16 // 17 // return 0; 18 //}//输出0 1 2 3 4 5 6 7 19 #import <Foundation/Foundation.h> 20 21 int main(int argc, const char * argv[]) 22 { 23 int i=0; 24 while (i<10) { 25 if (i>0&&i<=8) { 26 i++; 27 continue; 28 } 29 printf("%d ",i); 30 i++; 31 } 32 // while (i<10) { 33 // if (i == 0||i == 9) 34 // printf("%d ",i); 35 // i++; 36 // } 37 38 return 0; 39 }//输出0 9
二、do...while
do{
循环语句;
}while(条件表达式);
执行循环时,先执行循环体,在判断循环条件,直到条件不满足的时候,循环结束。
至少循环一次。
三、for循环
for(循环变量初始化;循环条件;循环增量){
语句(循环体);
}
循环条件为真的时候,执行循环体。通常给循环变量加条件来控制循环的结束。
1 #import <Foundation/Foundation.h> 2 3 int main(int argc, const char * argv[]) 4 { 5 6 for (int i=1; i<100; i++) { 7 if (i/10!=7&&i%7!=0&&i%10!=7) { 8 printf("%d ",i); 9 }else printf("过 "); 10 11 } 12 13 return 0; 14 }//逢7过
1 //输出三排随机数10-30,每排三个数 2 /* 3 #import <Foundation/Foundation.h> 4 5 int main(int argc, const char * argv[]) 6 { 7 8 for (int i = 1; i<4; i++) { 9 for (int j=0; j<3; j++) { 10 printf("%d ",arc4random()%21+10); 11 } 12 printf("\n"); 13 } 14 15 return 0; 16 }*/ 17 //输出三排随机数,第一排一个数,第二排两个数,第三排三个数,随机数范围10-30 18 #import <Foundation/Foundation.h> 19 20 int main(int argc, const char * argv[]) 21 { 22 23 for (int i = 0; i<3; i++) { 24 for (int j=0; j<=i; j++) { 25 printf("%d ",arc4random()%21+10); 26 } 27 printf("\n"); 28 } 29 30 return 0; 31 } 32 //输出乘法口诀表 33 /* 34 #import <Foundation/Foundation.h> 35 36 int main(int argc, const char * argv[]) 37 { 38 39 for (int i = 1; i<=9; i++) { 40 for (int j=1; j<=i; j++) { 41 printf("%d*%d=%d\t",i,j,i*j); 42 43 } 44 printf("\n"); 45 } 46 47 return 0; 48 }*/
//打印三个数字(0-9)的组合可能(组合成三位数) #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { for (int i = 0; i<=9; i++) { for (int j=0; j<=9; j++) { for (int k =1; k<=9; k++) { printf("%d%d%d ",k,i,j); } } } return 0; }
总结:
循环是程序开发最重要的组成部分,充分理解循环的执行过程是学好以后课程的保障
for循环最常⽤用,通常⽤用于循环次数已知的情形
while循环也很常⽤用,通常⽤用于不知道循环次数的情形
do...while不是特别常⽤用,通常⽤用于需要先执⾏行⼀一次的情形
三种循环⼀一般都能相互转化