前言
提示:这里可以添加本文要记录的大概内容:
1.掌握C语言循环结构的基本用法
2.循环包括for循环,while循环,do~循环
3.循环结构使用时所需要注意事项
1. for循环
for(表达式1;表达式2;表达式3)
表达式1:用于变量的初始化
表达式2:用于循环语句的判断
表达式3:用于变量调整
,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。
表达式1.2.3都可以省略,但是新手尽量不要省略,以免带来不必要的麻烦
for循环的实践
在屏幕上打印1~10的值
#include <stdio.h> int main() { int i = 0; for(i=1; i<=10; i++){ printf("%d ", i); } return 0; } //输出结果为1.2.3.4.5.6.7.8.9.10
同样for循环也可以嵌套
如:输出9*9乘法表
#include<stdio.h> int main() { int a, b; for(a=1;a<=9;a++){ for(b=1;b<=a;b++){ printf("%d*%d=%d\t",a,b,a*b); } printf("\n"); } return 0; }
for循环嵌套使用还是非常好玩的
2. while循环
while 语句的语法结构和 if 语句⾮常相似
为逻辑判断语句
结构为
while(a){ 循环语句; }
(a)a为真(非零)则循环,a为假(为零)则不执行循环语句,先判断后循环
例子:在屏幕上打印1~10的值
#include <stdio.h> int main() { int i = 1; while(i<=10) { printf("%d ", i); i = i+1; } return 0; } //结果为1 2 3 4 5 6 7 8 9 10
练习:
输⼊⼀个正的整数,逆序打印这个整数的每⼀位
例如:
输⼊:1234,输出:4 3 2 1
输⼊:521,输出:1 2 5
解析:
要想得到n的最低位,可以使⽤n%10的运算,得到的余数就是最低位,如:1234%10得到4
要想去掉n的最低位,找出倒数第⼆位,则使⽤ n=n/10 操作就可以去掉最低位的,如:
n=1234/10得到123,123相较于1234就去掉了最低位,123%10就得到倒数第⼆位3。
循环1和2两个步骤,在n变成0之前,就能到所有的位。
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); while(n) { printf("%d ", n%10); n /= 10; } return 0; }
3.do-while循环
在循环语句中 do while 语句的使⽤最少
使用格式
do{ 语句; }while(表达式);
while 和 for 这两种循环都是先判断,条件如果满⾜就进⼊循环,执⾏循环语句,如果不满⾜就跳
出循环;
⽽ do while 循环则是先直接进⼊循环体,执⾏循环语句,然后再执⾏ while 后的判断表达式,表
达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环。
所以在 do while 语句中循环体是⾄少执⾏⼀次的,这是 do while 循环⽐较特殊的地⽅。
同上例子:
输⼊⼀个正整数,计算这个整数是⼏位数? 例如: 输⼊:1234 输出:4 输⼊:12 输出:2
#include <stdio.h> int main() { int n = 0; scanf("%d", &n); int cnt = 0; do{ cnt++; n = n / 10; } while (n); printf("%d\n", cnt); return 0; }
这⾥并⾮必须使⽤ do while 语句,但是这个代码就⽐较适合使⽤ do while 循环,因为n即使是
0,也是1位数,要统计位数的。
4.break和continue语句
• break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执
⾏。
• continue 的作⽤是跳过本次循环 continue 后边的代码,在 for 循环和 while 循环中有所
差异的。
while循环break例子:
#include <stdio.h> int main() { int i = 1; while(i<=10){ if(i == 5) break;//当i等于5后,就执⾏break,循环就终⽌了 printf("%d ", i); i = i+1; } return 0; }
输出:1 2 3 4
解析:打印了1,2,3,4后,当i等于5的时候,循环正 break 的地⽅终⽌,不再打印,不再循环。
while循环continue例子:
#include <stdio.h> int main() { int i = 1; while(i<=10){ if(i == 5) continue; //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅ //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环 printf("%d ", i); i = i+1; } return 0; }
解析: continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接
到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成
死循环。
5. for循环中的break和continue
其实和 while 循环中的 break ⼀样,这里就不在举例子了
看for循环中 continue举例
#include <stdio.h> int main() { int i = 1; for(i=1; i<=10; i++){ if(i == 5) continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分 printf("%d ", i); } return 0; } //输出结果为:1 2 3 4 6 7 8 9 10,跳过5
在这⾥我们也可以对⽐⼀下 while 循环和 for 循环中 continue 的区别:
while中直接跳回判断,而for循环先++在判断
6.goto语句实现循环
goto语句
C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数
内跳转到设置好的标号处。
如:
#include <stdio.h> int main() { printf("hehe\n"); goto next://goto后面的可以是随机的,但是要有对于的出口 printf("haha\n");//相当于时空门有人口出口 next: printf("跳过了haha的打印\n"); return 0; }
goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建
议是能不⽤尽量不去使⽤;但是 goto 语句也不是⼀⽆是处,在多层循环的代码中,如果想快速跳出
使⽤ goto 就⾮常的⽅便了。
如:
for(...){ for(...){ for(...){ if(disaster) goto error; } } } error:
本来 for 循环想提前退出得使⽤ break ,⼀个 break 只能跳出⼀层 for 循环,如果3层循环嵌套
就得使⽤3个 break 才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。