while语句
语法形式和执行流程
1.语句形式:
while(表达式)
{
语句 //如果只想执行一句就可以不需要大括号
}
2.执行流程
首先,执行判断表达式,如果表达式的值为0(为假),循环直接结束;如果表达式不为0,则执行循环里面的语句。接着,语句执行完后再继续判断,判断是否进行下一次循环。
while循环的实践
输入一个正整数,逆序输出这个整数的每一位:
#include<stdio.h>
int main()
{
int n = 0;
scanf("%d", &n);
while (0 != n % 10)
{
printf("%d ", n % 10);
n /= 10;
}
return 0;
}
for语句
语法形式和执行流程
首先,for语句是三种循环语句中最常见的一种。
1.语法形式:
for(表达式1;表达式2;表达式3)
{
语句
}
其中,表达式1是用于循环变量的初始化,表达式2是用于循环结束的条件的判断,表达式3是循环变量的调整。
2.执行流程:
首先,执行表达式1 初始化循环变量;接着,执行表达式2 的判断部分,如果结果为0,则循环结束,如果结果不为0,则进入循环,执行循环语句,执行完后,则继续执行表达式3,调整循环变量,然后继续执行表达式2 的判断部分,判断其是否为0,决定是否继续执行循环语句。
整个过程中,表达式1只执行1次,剩下的表达式2,循环语句,表达式3循环执行。
for循环的实践
1.计算1-100之间3的倍速的数字之和:
#include<stdio.h>
int main()
{
int n = 1;
int sum = 0;
for (n = 1; n <= 100; n++)
{
if (0 == n % 3)
{
sum += n;
}
}
printf("%d\n", sum);
return 0;
}
for与while循环的对比
for和while在循环过程中都有初始化,判断,调整三个部分,但是for循环的三个部分非常集中,便于代码的维护,而如果用while循环的三个部分就比较分散,所以从形式上for循环要更优一点。
do while语句
语法形式和执行流程
do
{
语句;
}while(表达式);
while和for这两种循环都是先判断,条件如果满足就进入循环,执行循环语句,如果不满足就跳出循环;而do-while循环则先直接进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,则会进行下一次,表达式为假,则不会执行。
在do-while语句中循环体是至少执行一次的,这是do-while循环比较特别的地方。
do while循环的实践
1.输入一个正整数,计算这个整数是几位数:
#include<stdio.h>
int main()
{
int n = 0;
int a = 0;
scanf("%d", &n);
do
{
a++;
} while (n /= 10);
printf("%d\n", a);
return 0;
}
break和continue语句
break和continue语句就是运用到循环中的两个关键字:
1.break的作用是用于永久的终止循环,只要break被执行,直接就会跳出循环,继续往后执行。
2.continue的作用是跳过本次循环continue后边的代码,在for和while中有所差异差异的。
while循环
1.break就是永久的终止循环,只要break被执行,break外的第一层循环就终止了;
2.continue可以帮助我们跳过某一次循环continue后边的代码,直接到循环的判断部分,进行下一次循环的判断,则可能造成死循环
for循环
1.break和while相同;
2.continue的作用是跳过本次循环中continue后的代码,直接去到循环的调整部分
do while循环
1.break和continue的作用与while相同
循环的嵌套
while,do-while,for,这三个循环往往会嵌套在一起才能更好的解决问题。
实践练习
1.找出100-200之间的素数,并打印在屏幕上。
int main()
{
int n = 0;
for (n = 100; n <= 200; n++)
{
int flag = 0;
for (int i = 2; i < n; i++)
{
if (n % i == 0)
{
flag = 1;
break;
}
}
if (0 == flag)
{
printf("%d ", n);
}
}
return 0;
}
goto语句
1.作用:
goto语句可以实现在同一个函数内跳转到设置好的标号处,经常与跳转标号一起用
#include<stdio.h>
int main()
{
printf("hehe\n");
goto next;
printf("haha\n");
next:
printf("跳过了haha的打印\n");
return 0;
}
2.使用提示:
一般不会使用goto语句,在多层循环的代码中,如果想要快速跳出,使用goto语句就非常的方便了。
for(...)
{
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
}
error:
//...
本来for循环想提前退出得使用break,一个break只能跳出一层for循环,如果三层嵌套for循环就得使用三个break才能跳出循环,所以这个时候我们使用goto语句就会更加的快捷。