格式:
while(条件表达式){
代码段1;
}
步骤1:若条件表达式成立(不为0),则执行代码段1(排除break等因素直接跳出循环)
再对条件表达式进行判断,若成立,则反复步骤1
直至条件表达式不成立(为0)时,退出while循环
例1:使用while循环打印1-10
//打印1-10
int main() {
int i = 1;
while (i<=10)
{
printf("%d\n", i);
i++;
}
return 0;
}
例2:输入一个正整数,逆序打印这个数
思路:
步骤一:
得到n的最低位 n%10
例如:2345%10=5
步骤二:
去掉n的最低位 n/10
例如:2345/10=234
反复步骤一、二 直至n=0为止 即可逆序获得一串整数
int main() {
int i = 0;
scanf("%d",&i);
while (i)//等同于 i != 0 的效果
{
int a = i % 10;
printf("%d", a);
i /= 10;
}
return 0;
}
格式:
for(表达式1;表达式2;表达式3){
代码段;
}
表达式1 循环变量的初始化
表达式2 循环结束的条件判断
表达式3 循环变量的调整
例1:使用for循环打印1-10
int main() {
for (int i = 1; i <= 10; i++){
printf(" %d", i);
}
return 0;
}
例2:输入一个正整数,逆序打印这个数
思路:
步骤一:
得到n的最低位 n%10
例如:2345%10=5
步骤二:
去掉n的最低位 n/10
例如:2345/10=234
反复步骤一、二 直至n=0为止 即可逆序获得一串整数
//输入一个正整数,逆序打印正整数
int main() {
int i = 0;
for (scanf("%d",&i); i!=0; i/=10) {
int a = i % 10;
printf("%d", a);
}
return 0;
}
例3:计算1-100之间3的倍数的数字之和
int main() {
int sum = 0;
for (int i = 1; i <= 100; i++){
if (i % 3 == 0) {
sum += i;
}
}
printf("%d", sum);
return 0;
}
输出结果:1683
循环语句中do while语句使用的最少
格式:
do{
语句1;
}while(条件表达式);
do while是先执行一次循环内部的语句1(所以do while循环中至少会执行一次循环体内的语句)
然后再开始对while的条件表达式进行判断,若成立,则执行语句1;不成立,则退出循环
例1:使用do while循环打印1-10
int main() {
int i = 1;
do{
printf("%d",i);
i++;
} while (i<=10);
}
例2:输入一个正整数,计算这个整数是几位数
int main() {
int i = 0;
int count = 0;
scanf("%d", &i);
do{
i /= 10;
count++;
} while (i!=0);
printf("%d", count);
}
break 的作用直接使其终止循环(更准确的来讲是break外的第一层循环结构),跳出循环语句
continue 的作用是跳过本次循环(即 直接忽略循环体中continue以下的所有代码,直接重新进入循环中条件判断的部分)
4.1 while中的break和continue
break
例:用while循环打印1-10,若遇见5,则立刻停止打印
//break
int main() {
int i = 1;
while (i <= 10)
{
if (i == 5) {
break;
}
printf("%d ", i);
i++;
}
return 0;
}
continue
例:用while循环打印1-10中除了5以外的所有数
//continue
int main() {
int i = 1;
while (i<=10)
{
if (i == 5) {
i++;
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
4.2 for中的break和continue
break
例:用for循环打印1-10,若遇见5,则立刻停止打印
//break
int main() {
for (int i = 1; i <= 10; i++)
{
if (i == 5) {
break;
}
printf("%d ", i);
}
return 0;
}
continue
例:用for循环打印1-10中除了5以外的所有数
//continue
int main() {
for (int i = 1; i <= 10; i++)
{
if (i == 5) {
continue;
}
printf("%d ", i);
}
return 0;
}
4.2 do while中的break和continue
和while里面的用法基本一致
其实while、for、do while三种循环语句其实再break和continue的用法上基本没有什么区别
真要说哪儿不同 只能说for和while的循环结构有点不同 不影响break和continue的用法
格式:
goto 跳转标识;
.....
.....
跳转标识:
goto语句和跳转标号是C语言中一种和特殊的语法
作用:goto语句可以实现再同一个函数内跳转至设置好的跳转标号处
适合使用的场景
多层嵌套的循环语句,如果想使用break终止循环,但是break只能跳出外面一层的循环,如果嵌套很深,则会很麻烦
goto其实在程序中使用的比较少,但是在多层嵌套的循环语句中,想要跳出循环,此时使用goto是个不错的选择
int count = 0;
for (int i = 1; i < 10; i++)
{
for (int j = 1; j < 10; j++)
{
goto outside;
}
}
outside:
printf("goto跳出循环");
如果要用break跳出循环,每层循环体内都要写一个break
这里只用两层所有看着不明显,如果嵌套层数庞大,那就要写很多个break才能彻底跳出循环
而goto只需要在最外层做好标识,并在最内层的循环体内写上goto 跳转标识,即可跳出循环