循环结构:在满足特定条件(循环条件)下, 反复执行一个语句(循环体)
while do-while for
三种格式:
while(循环条件){
循环体;(反复执行)
}
执行顺序: 先判断循环条件, 如果成立, 然后执行循环体, 再判断循环条件, 成立就执行...反复… 直到判断循环条件不满足 退出循环
do{
循环体;
}while(循环条件);
执行顺序: 先执行一遍循环体, 再判断循环条件, 如果成立, 继续执行, 然后判断... 反复… 直到判断循环条件不满足 退出循环
for( 循环变量初始值 ; 循环条件; 循环增量){
循环体;
}
用三种格式完成输出整数 1到100;
int
i =
1
;
while (i <= 100) { //在执行之前判断条件
printf
(
"%d\n"
,i);
i++;
}
i++;
}
int j = 0;
do { //在执行后判断条件
j++;
printf ( "%d\n" ,j);
} while (j < 100 );
for ( int k = 1 ; k <= 100 ; k++) { //执行前判断条件,好处在于 判断变量不需要事先定义, 节省空间
printf ( "%d\n" ,k);
printf ( "%d\n" ,j);
} while (j < 100 );
for ( int k = 1 ; k <= 100 ; k++) { //执行前判断条件,好处在于 判断变量不需要事先定义, 节省空间
printf ( "%d\n" ,k);
}
break.
用在switch语句中
作用:跳出switch
在循环体中
作用:跳出本层循环(注意: 只跳一层)
具体伪代码示意如下:
while(条件1) { //while1
…; //语句1
while(条件2) { //while2
…; //语句2
break;
…; //语句3
}
…;语句4
}
这里break 只结束了while2 while1继续执行 按照语句执行顺序: 语句1 语句2 break 语句4 (语句3 不执行)
continue
作用:结束本次循环, 进行下一次循环;
break和continue的区别:
break: 在其所在的循环体中, 结束本次循环后, 之后的循环都不执行
continue: 在其所在的循环体中, 结束本次循环后, 之后的循环继续执行
continue 值得注意的是, 若循环增量语句在continue语句后, 可能会导致循环增量语句不执行(while do-while语句尤其) 而导致死循环
for最常⽤,通常⽤于知道循环次数的循环。
while也很常⽤,通常⽤于不知道循环次数的循环。
do…while不是特别常⽤,通常⽤于需要先执⾏⼀次的循环。
break跳出本层循环,continue结束本次循环。通常与if连⽤
循环嵌套:
基础应用: 打印九九乘法表
printf
(
"
九九乘法表
:"
);
for
(
int
i =
0
; i <
9
; i++) {
for
(
int
j =
0
; j <= i; j++) {
printf
(
"%d * %d = %-2d "
, i +
1
, j +
1
,(i +
1
) * (j +
1
));
}
printf
(
"\n"
);
}
随机数 arc4random(); //此随机数非C语言的随机数方法, 是OC中的随机数方法
arc4random()的返回值是一个u_int32_t 也就是无符号32位整型
所以arc4random()的生成值范围在 0 ~ 0xFFFFFFFF
可以通过 (float)arc4random() / 0xFFFFFFFF 获得一个随机小数
对于求取某一区间内的数(包括最大数最小数本身) (数学表达式: [小数, 大数] ) 的求取公式如下:
int number = arc4random() % (大数 - 小数 + 1) + 小数;
变量的作用域: 所处最内层的大括号里,声明之后的任意地方
1.先声明才能使用
2.出了自身存在的大括号 就失去作用
用while语句 循环n次:
写法1:
int n = 10;
while(n > 0) {
…;//循环体
n—-;
}
写法2:
int n = 10;
int i = 0;
while(i < n) {
…;//循环体
i++;
}
两种写法结果相同, 但是从变量的作用域考虑, 第二种写法定义了一个循环体外部变量i, 循环结束以后就无他用. 这样在变量i 的作用域里 就浪费了变量i的空间(除非变量i在之后还有复用).
所以建议第一种写法.