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