目录
一、for循环
1.1语法
(默认后面一条语句,如果加多条要注意大括号)
//列举1-10举例
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0; }
1.2 for循环执行图
1.3 for循环中的break 和 continue
break 跳出循环
continue 跳出本次循环continue之后的代码
图一: 跳过打印到 i + +
图二: 跳过了 i + +直接变成了死循环
1.4 for语句的循环控制变量
建议:
1. 不可在for 循环体内修改循环变量,防止 for 循环失去控制。
2. 建议for语句的循环控制变量的取值应尽量采用“前闭后开区间”写法(特殊情况除外)
int i = 0;
//前闭后开的写法
for(i=0; i<10; i++)
{}
//两边都是闭区间
for(i=0; i<=9; i++)
{}
都是为了良好的代码风格
1.5 一些for循环的变种
1.5.1 不建议省略
#include <stdio.h>
int main()
{
for(;;)
{
printf("hehe\n");
}
return 0;
}
//for循环中的初始化部分,判断部分,调整部分是可以省略的,但是不建议初学时省略,容易导致问
题。
//这边会死循环
注:这边因为判断条件省略------>死循环
1.5.2 循环嵌套
内循环打印10个
外循环打印10个
总共100,内循环结束到外循环之后再到内循环 j 会重新初始化
int i = 0;
int j = 0;
//这里打印多少个hehe?
for(i=0; i<10; i++)
{
for(j=0; j<10; j++)
{
printf("hehe\n");
}
}
1.5.3 省略初始化
这种省略的再次进入就无法初始化,所以十次
#include <stdio.h>
int main()
{
int i = 0;
int j = 0;
//如果省略掉初始化部分,这里打印多少个hehe?
for (; i < 10; i++)
{
for (; j < 10; j++)
{
printf("hehe\n");
}
}
}
1.5.4 使用多变量控制循环
#include <stdio.h>
int main()
{
//使用多余一个变量控制循环
int x, y;
for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)
{
printf("hehe\n");
}
return 0;
}
1.5.5 建议
建议把定义类型放在外面
1.6 一道笔试题
//请问循环要循环多少次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for (i = 0, k = 0; k = 0; i++, k++)
{
k++;
}
return 0;
}
答:无,k=0是赋值表达式使判断部分为假
二、do.....while循环
2.1 语法形式
先干事,至少循环一次
2.2 执行流程
2.3 do语句的特点
循环至少执行一次,使用的场景有限,所以不是经常使用。
2.4 break 和 continue
2.5 循环练习
三、 goto语句
C
语言中提供了可以随意滥用的
goto
语句和标记跳转的标号。
从理论上
goto
语句是没有必要的,实践中没有
goto
语句也可以很容易的写出代码。
但是某些场合下
goto
语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
例如:一次跳出两层或多层循环。
多层循环这种情况使用
break
是达不到目的的。它只能从最内层循环退出到上一层的循环。
关机程序:
#include <stdio.h>
#include <windows.h>
#include <string.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0; }