目录
一、while循环简介
C语言提供了3种循环语句,while循环是其中最基础的一种。while语句的语法结构与if语句非常相似,但功能却大不相同。
二、if和while的对比
语法结构对比:
if(表达式)
语句;
while(表达式)
语句; // 如果循环体想包含更多语句,可以加上大括号
实际代码对比:
// 代码1 - if语句
#include <stdio.h>
int main()
{
if(1)
printf("hehe\n"); // if条件满足,只打印一次hehe
return 0;
}
// 代码2 - while语句
#include <stdio.h>
int main()
{
while(1)
printf("hehe\n"); // while条件满足,会不断循环打印hehe
return 0;
}
关键区别:if语句只会执行一次条件满足的代码,而while语句会重复执行,直到条件不再满足。
三、while语句的执行流程
while循环的执行流程如下:
首先判断表达式值:
如果值为0(假),循环立即结束
如果值不为0(真),执行循环体语句
循环体执行完毕后,再次判断表达式
重复上述过程,直到表达式值为0
流程图表示:
四、while循环实践
练习:在屏幕上打印1~10的值
#include <stdio.h>
int main()
{
int i = 1; // 初始化计数器
while(i <= 10) // 循环条件
{
printf("%d ", i); // 打印当前值
i = i + 1; // 更新计数器
}
return 0;
}
程序分析:
初始化i为1
检查i是否<=10
如果条件为真,执行循环体(打印i并使i增加1)
重复步骤2-3,直到i>10时循环结束
五、进阶练习
题目:输入一个正整数,逆序打印这个整数的每一位
示例:
输入:1234,输出:4 3 2 1
输入:521,输出:1 2 5
解题思路:
获取最低位:使用n%10运算,如1234%10=4
去掉最低位:使用n/10运算,如1234/10=123
循环上述两步,直到n变为0
参考代码:
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
while(n != 0)
{
printf("%d ", n % 10); // 打印当前最低位
n /= 10; // 去掉已经处理的最低位
}
return 0;
}
代码改进建议:
添加输入验证,确保输入的是正整数
可以在最后添加换行,使输出更整洁
考虑处理n=0的特殊情况
#include <stdio.h>
int main()
{
int n = 0;
printf("请输入一个正整数:");
scanf("%d", &n);
if(n == 0) {
printf("0\n");
return 0;
}
if(n < 0) {
printf("输入必须是正整数!\n");
return 1;
}
while(n != 0)
{
printf("%d ", n % 10);
n /= 10;
}
printf("\n"); // 添加换行
return 0;
}