这篇来说一说C语言中的while循环.
内容在书6.1, 6.2章.
1 while循环
1.1 简单小游戏介绍while循环
while的意思就是当,所以while循环的意思就是,当符合条件就执行语句.
下面是一个简单的带while循环的猜数小游戏
int main(void) {
int input = 0;
while(input != 5) {
printf("请输入一个数字,提示:0~10之间."\n);
scanf("%d", &input);
}
printf("正确,答案是5.\n");
return 0;
}
这是一个猜数小游戏,答案是5.只要用户不输入5,程序就会一直运行下去,直到用户输入5.
可能的运行结果
请输入一个数字,提示:0~10之间.
4
请输入一个数字,提示:0~10之间.
3
请输入一个数字,提示:0~10之间.
10
请输入一个数字,提示:0~10之间.
5
正确,答案是5.
只要while后面的判断一直为真,就会一直执行while循环,直到表达式为假.
1.2 解决高斯的100+99+98+....+1问题
高斯是用(100+1)+(99+2)+....+(51+50)解决的,在计算机中不需要这种简便算法,因为现代计算机处理速度极快,这个程序是由用户输入一个值,由程序自动计算从1到这个数的和值.
int main(void) {
int input;
int result = 0;
printf("请输入一个数字,程序将自动计算从1加到这个数的和.\n");
scanf("%d", & input);
while(input > 0) { //先判断再循环
result += input;
input--;
}
printf("从1加到%d的和为 : %d", input, result);
return 0;
}
执行结果
请输入一个数字,程序将自动计算从1加到这个数的和.
1024
从1加到0的和为 : 524800
1.3 一些注意事项
1.加不加大括号?
在循环体只有一条语句时,可以不加大括号,比如
int main(void) {
int times = 5;
while(times > 0) //没有大括号
printf("times = %d\n", times--);
return 0;
}
运行结果
times = 5
times = 4
times = 3
times = 2
times = 1
2.死循环
死循环就是一直无法正常退出的循环.下面的程序使用了缩进,但是实际上只有while后面第一条语句属于while循环.
int main(void) {
int times = 5;
while(times > 0)
printf("times = %d\n", times);
times--;
return 0;
}
所以运行结果就是
times = 5
times = 5
times = 5
times = 5
times = 5
times = 5
...
不关闭程序就会一直输出"times = 5",成为一个死循环.因为times一直等于5,并没有进行"times--"操作,所以"times>0"恒为真.
2 do-while循环
这节内容在书6.8章.
上面的while循环和下一篇要说到的for循环是"入口条件循环",即"每次循环迭代之前检查测试条件."(159页),也就是"先判断再循环".相对的,还有一种"出口条件循环."(159页),即"每次循环迭代之后检查测试条件."(159页)的do-while循环.也就是"先循环再判断".
int main(void) {
int password;
int correct = 789456;
do { //先循环
printf("请输入登录密码:\n");
scanf("%d", &password);
} while(password != correct); //再判断
printf("登陆成功.");
return 0;
}
运行结果
请输入登录密码:
123456
请输入登录密码:
789123
请输入登录密码:
789456
登陆成功.