首页 > 代码库 > Objective-C之成魔之路【6-循环结构】
Objective-C之成魔之路【6-循环结构】
重开发者的劳动成果,请勿转载
计算机的基本属性之一就是它能够重复执行一组语句。
循环语句的作用是反复执行一段代码, 直到满足终止循环的条件为止。
Objective-C语言中提供的循环语句有:
? while语句
? do-while语句
? for语句
? while语句
? do-while语句
? for语句
while语句, 它的语法形式如下, 其中“[] ” 中的部分可以省略。
[initialization]
while (termination){
body;
[iteration;]
}
while (termination){
body;
[iteration;]
}
举例如下:
水仙花数是指一个 n 位数 ( n>=3 ),它的每个位上的数字的 n 次幂之和等于它本身。
(例如:1^3 + 5^3 + 3^3 = 153)
下面代码是计算1000以内的水仙花数。
int i = 100;
int r, s, t;
r = 0;s = 0;t = 0;
while (i < 1000) {
r = i / 100;
s = (i - r * 100) / 10;
t = i - r * 100 - s * 10;
if (i == r * r * r + s * s * s + t * t * t) {
NSLog(@" %i " , i );
}
i = i + 1;
}
int i = 100;
int r, s, t;
r = 0;s = 0;t = 0;
while (i < 1000) {
r = i / 100;
s = (i - r * 100) / 10;
t = i - r * 100 - s * 10;
if (i == r * r * r + s * s * s + t * t * t) {
NSLog(@" %i " , i );
}
i = i + 1;
}
三位的水仙花数共有4个,分别为:153、370、371、407。
do-while语句, 它的语法形式如下, 其中“[] ” 中的部分可以省略
[initialization]
do {
body;
[iteration;]
} while (termination);
计算1000以内的水仙花数
int i = 100;
int r, s, t;
r = 0;s = 0;t = 0;
do {
r = i / 100;
s = (i - r * 100) / 10;
t = i - r * 100 - s * 10;
if (i == r * r * r + s * s * s + t * t * t) {
NSLog(@" %i " , i );
}
i = i + 1;
} while (i < 1000);
for语句, 语法形式如下:
for (initialization; termination; iteration){
body;
}
举例如下:
下面代码是计算0~10平方、 立方数并输出:
int i = 10;
int r, s;
r = 0;
s = 0;
for (int j = 0; j <= i ; j++) {
r = j * j;
s = j * j * j;
NSLog(@"整数为: %i 对应的平方和%i :对应的立方和:%i ", j, i , s);
}for语句小结
for语句将按以下步骤执行:
1.先求初始表达式的值。
2.求循环条件的值。
3.执行组成循环体的程序语句。
4.求循环表达式的值。
5.返回到2执行。
在for循环语句的“() ” 内部一般有3条语句,
initialization初始化语句, termination终止条件语句, iteration迭代语句,
其中这3条语句都是可以省略的。
例如把j 的初始化放在循环体的外面, 代码如下:
int j = 0;
for (; j <= i ; j++) {
r = j * j;
s = j * j * j;
NSLog(@"整数为: %i 对应的平方和%i :对应的立方和:%i ", j, i , s);
}
跳转语句
与程序转移有关的跳转有break, continue, goto语句,
break和continue都主要与循环有,
goto语句在C中就有, 它是无条件跳转可以完全替代break和continue, 一般要慎用 。
break语句
break语句在switch中使用过, 用来终止switch语句的执行。
break语句还可以用于循环体中, 终止当前的循环, 并紧跟该循环块的第一条语句处执行。
举例如下:
break语句
for (int i = 0; i < 10; i++) {
if (i == 3)
break;
NSLog(@ " i =%i", i);
}
NSLog(@" Game Over!");
i =0
i =1
i =2
Game Over!
也就是说如果在一组嵌套循环中执行break语句,仅会推出执行break语句的最内层循环。
continue语句
continue语句用来结束本次循环, 跳过循环体中下面尚未执行的语句,
接着进行终止条件的判断, 以决定是否继续循环。
对于for语句, 在进行终止条件的判断前, 还要先执行迭代语句。
举例如下:
for (int i = 0; i < 100; i ++) {
if (i % 10 == 0)
continue;
NSLog(@"%i ", i );
}
…
18
19
21
22
…
goto语句
goto语句是无条件跳转, 可以完全替代break和continue。
如果是嵌套循环, 可以使用 goto语句指定标签, 来改变程序的流程。
举例如下:
for (int j = 0; j < 10; j++) {
for (int i = 0; i < 10; i++) {
if (i == 3)
goto label;
NSLog(@ " i =%i", i);
}
}
label:
NSLog(@" Game Over!");
在内循环中使用 break和continue都只能跳出内循环,
goto语句没有这个限制,
label: 是标签定义, goto语句后面要跟有标签。
Objective-C之成魔之路【6-循环结构】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。