C语言是结构化的程序设计语言,这里的结构是指:顺序结构、循环结构、选择结构。在C语言中,有三种循环语句,下文将一一介绍如何在C语言编程时使用。
1. while语句
while语句的语法形式如下:
1 while(表达式);
2 {
语句;
}
示例代码:
// while后的表达式为真,死循环打印 Hello World!
#include <stdio.h>
int main()
{
while (1)
{
printf("Hello World!\n");
}
return 0;
}
while语句的执行流程如下:
首先,执行判断表达式,若表达式为真,则执行循环语句,语句执行结束后再继续判断表达式是否为真,是否进行下一次循环;若表达式为假,循环结束。
练习代码:
//练习代码1:打印0~10的值
#include <stdio.h>
int main()
{
int i = 0;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
//练习代码2:输入一个正整数,逆序打印这个正整数的每一位。
#include <stdio.h>
int main()
{
int i = 0;
int a = 0;
scanf_s("%d", &i);
while (i != 0)
{
a = i % 10;
i = i / 10;
printf("%d ", a);
}
return 0;
}
2. for语句
for语句的语法形式如下:
1 for(表达式1;表达式2;表达式3)
2 {
语句;
}
示例代码:
//打印0~10的值
#include <stdio.h>
int main()
{
int i = 0;
for (i = 0; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
for语句的执行流程如下:
首先,执行表达式1初始化循环变量。然后执行表达式2的判断条件,若表达式2为假,则跳出循环体;若表达式2为真,则执行循环语句。循环语句执行后,再去执行表达式3,调整循环变量。然后再去执行表达式2的判断条件,决定是否继续循环。需要注意的是,整个循环过程,表达式1初始化循环变量只执行1次,只有表达式2、循环语句和表达式3在循环。
练习代码:
//练习代码:计算1~100之间3的倍数之和
#include <stdio.h>
int main()
{
int i = 0;
int sum = 0;
for (i = 0; i <= 100; i++)
{
if (i % 3 == 0)
{
printf("%d ", i);
sum = sum + i;
}
}
printf("\n%d\n", sum);
return 0;
}
3. do-while语句
do-while语句的语法形式如下:
1 do
2 {
语句;
}while(表达式);
示例代码:
//示例代码:打印0~10的值
#include <stdio.h>
int main()
{
int i = 0;
do
{
printf("%d ", i);
i++;
}while (i <= 10);
return 0;
}
do-while语句的执行流程如下:
首先,do-while语句先执行循环语句,然后再执行while后的判断表达式,若表达式为真,则会进行下一次循环;若表达式为假,则会跳出循环体。需要注意的是,while语句和for语句这两种循环都是先判断表达式真假,再决定是否执行循环语句,而在do-while语句中会直接执行一次循环语句,再进行判断语句,所以do-while语句中循环体至少执行一次。
练习代码:
//练习代码:输入一个正整数,计算这个整数是几位数?
#include <stdio.h>
int main()
{
int i = 0;
int count = 0;
scanf_s("%d", &i);
do
{
count++;
i /= 10;//i = i / 10
}while (i);
printf("count = %d", count);
return 0;
}
4. break语句和continue语句
在循环执行的过程中,如果需要提前终止循环,就需要用到 break和continue这两个关键字。
break是用于永久终止循环,即只要break语句被执行,就会直接跳出循环体,执行后面的程序。
continue是跳过本次循环中continue后的代码,在while语句和for语句中有所差异,需要具体问题具体分析。
4.1 while语句中的break和continue
4.1.1 break
示例代码:
//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
{
break;//当i等于5时,循环就终止了
}
printf("%d ", i);
i++;
}
return 0;
}
输出结果:
代码分析:输出1,2,3,4后,当i等于5后,循环在break的地方终止。不再输出,循环彻底终止。所以brake的作用就是永久终止循环,只要break被执行,break外的第一层循环就终止了。当使用while语句时想在某种条件下终止循环,则可使用break实现。
4.1.2 continue
示例代码:
//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
{
continue;
/*
* 当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式。
* 这里跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。
*/
}
printf("%d ", i);
i++;
}
return 0;
}
输出结果:
代码分析:continue在循环中作用是跳过本次循环中continue后的代码,继续进行下一次循环判断。当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式,跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。如果循环的调整语句在continue前,就不会陷入死循环。
4.2 for语句中的break和continue
4.2.1 break
示例代码:
//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
输出结果:
代码分析:在for语句中,break也是用于终止循环的,不管循环了多少次,只要执行了break,循环就彻底终止。
4.2.2 continue
示例代码:
//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
int i = 1;
for (i = 1; i <= 10; i++)
{
if (i == 5)
{
continue;//这里continue跳过了i=5时输出,直接执行了i++的调整部分
}
printf("%d ", i);
}
return 0;
}
输出结果:
代码分析: 在for语句中,continue作用是跳过本次循环中continue后的代码,直接去到循环的调整部分。在使用for语句编程时,若想满足某个条件时,本次循环无需再执行后续某些操作时,则可使用continue。
4.3 do-while语句中的break和continue
do-while语句中的break和continue的作用和while语句中的break和continue的作用相似,这里不做赘述。
5. goto语句
在C语言中,除了分支语句和循环语句,还有一种特殊的语句,这就是goto语句和跳转标号。goto语句的作用是在同一个函数内跳转到设置好的标号处。
示例代码:
#include <stdio.h>
int main()
{
printf("Hello World!\n");
goto next;
printf("ABCD\n");
next:
printf("EFGH\n");
return 0;
}
输出结果: