在C语言中,循环语句用于重复执行一段代码,直到指定的条件不再满足为止。C语言提供了三种类型的循环语句:for循环、while循环和do-while循环。
1. while循环
while循环用于在指定的条件为真时重复执行一段代码。它只包含一个循环条件。 示例:
在每次循环开始时,初始化表达式会执行一次。然后,循环条件会被检查,如果为真,则执行循环体代码。之后,循环增量会被执行,再次检查循环条件。如果循环条件为假,则退出循环。
while (循环条件) {
// 循环体代码
}
在每次循环开始时,循环条件会被检查。如果为真,则执行循环体代码。之后,再次检查循环条件。如果循环条件为假,则退出循环。
1.1.break语句
除了循环条件为假,程序退出循环外,还可以在while循环加入break语句,使程序跳出循环,如下所示:
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
break;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果如下:
需要注意的是,这里的break语句是对while循环起作用,而不是if语句。
1.2. continue语句
还有一个需要注意的是,while循环也加入continue语句,continue语句的作用是跳过continue后的程序直接进入到while循环条件的判断,例如:
int main()
{
int i = 1;
while (i <= 10)
{
if (5 == i)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
运行结果如下,显示程序进入死循环,因为打印i=4后,i++等于5,执行continue语句,直接进入循环条件的判断i<=10,i并没有执行i++所示它的值仍是5,因此陷入死循环中。
1.3.简单应用
这里需要先介绍getchar()和putchar()函数
在C语言中,getchar()和putchar()函数是用于输入和输出单个字符的函数。
- getchar()函数:getchar()函数用于从标准输入流(通常是键盘)获取一个字符,并返回该字符的ASCII码值(整数)。它的函数原型如下:
int getchar(void);
示例:
char ch;
ch = getchar(); // 从键盘输入一个字符,并将ASCII码值赋给ch变量
这个函数会从输入流中读取一个字符,并将其返回作为整数。通常,我们会将返回的整数值赋给一个字符变量,以便进行处理。
- putchar()函数:putchar()函数用于将一个字符输出到标准输出流(通常是屏幕)。它的函数原型如下:
int putchar(int character);
示例:
char ch = 'A';
putchar(ch); // 输出字符'A'到屏幕
这个函数会将输入的字符作为参数,输出到标准输出流中。它返回输出的字符,通常不会使用返回值。
这两个函数是C语言中常用的字符输入输出函数,可以方便地进行单个字符的输入和输出操作。
下面是与while循环语句的简单应用:
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch>'9')
continue;
putchar(ch);
}
return 0;
}
运行结果如下:
输入Ctrl键+Z键即可跳出循环,这里实现的功能就是只输出输入的字符串中的数字。
2.for循环
for循环用于在指定的次数内重复执行一段代码。它由三个部分组成:初始化表达式、循环条件和循环增量。 示例
for (初始化表达式; 循环条件; 循环增量) {
// 循环体代码
}
for循环是三种循环语句中使用频率最高的,它与while循环语句相比,for循环的初始化表达式、循环条件和循环增量是集中在一起的,需要修改其中的某一部分时要比while循环要方便。
它运行机理是先进行初始化,然后判断循环条件,若满足循环条件,则执行循环语句,最后进行循环增量,虽然for循环和while循环很相似,但还是有所区别,后面会介绍。
2.1break语句
for循环中同样也可加入break语句,如下所示:
int main()
{
int i = 0;
for (i = 1;i <= 10;i++)
{
if (i == 5)
{
break;
}
printf("%d ", i);
}
return 0;
}
代码运行结果如下:
从上面可以看出,break语句在for循环中的使用,与while循环中的结果一致 。
2.2continue语句
for循环中加入continue语句,与加在while循环中的效果不同,如下所示:
int main()
{
int i = 0;
for (i = 1;i <= 10;i++)
{
if (i == 5)
{
continue;
}
printf("%d ", i);
}
return 0;
}
运行结果如下:
从上面的结果可以看出,它与while循环中使用时会陷入死循环不同,在for循环中只是跳过i = 5,然后输出其他结果。原因在于for循环是先执行循环语句continue语句,再进行循环增量,这是必不可少的。
2.3其他
可以使用多个变量控制循环,例如:
int main()
{
int x, y;
for (x = 0, y = 0;x < 2 && y < 5;++x, y++)
{
printf("haha\n");
}
return 0;
}
3.do-while循环
do-while循环用于在指定的条件为真时重复执行一段代码。它与while循环的不同之处在于,它会先执行一次循环体代码,然后再检查循环条件。 示例
do {
// 循环体代码
} while (循环条件);
在每次循环开始时,先执行循环体代码。然后,循环条件会被检查。如果为真,则继续执行循环体代码。之后,再次检查循环条件。如果循环条件为假,则退出循环。
首先同样是使用do-while循环输出1-10,如下所示:
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
3.1break语句
do-while循环中加入break语句,如下所示:
int main()
{
int i = 1;
do
{
if (5 == i)
{
break;
}
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
结果如下:
3.2continue语句
do-while循环加入continue语句,如下所示:
int main()
{
int i = 1;
do
{
if (5 == i)
{
continue;
}
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
运行结果如下:
从上面的结果可以看到,输出陷入死循环, 这与在while循环中效果一致。
4.总结
使用循环语句可以方便地重复执行一段代码,节省编写重复代码的时间和精力。同时,需要注意循环条件的设置,以免导致死循环