小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/video/av20868986/
接下来讲解的是循环的两条语句while
和for
,当我们需要用到循环的时候,这两种循环语句都是可以使用的,可以从这两种里选择一种来使用。而它们的选择依据是:哪个更容易表达出逻辑就用哪个,至于怎样才能看出哪个更容易,这就需要这两种都写一次然后进行对比,直到熟练后就可以灵活选择了。接下来就是讲解这两种循环语句,而讲解过程中会有两个例子,分别用这两种循环语句去实现代码,在看例子的代码前,可以自己画出流程图,再看例子的代码,这样可以加深理解。
while 语句
当while
的条件是true
时,将一直执行{}
中的代码,直到条件变成false
。
while (true或者false)
{
// 执行代码
} // 执行到这里会跳回上面的 while (true或者false) 重新判断
基础示例 1
问题1:输入5个整数数值,然后求这5个数的和。
#include <iostream> // std::cin std::cout std::endl
int main(void)
{
int sum = 0; // 用于保存所有数的和
int count = 0; // 用于记录输入了几个数值
// 当输入的数值小于5个时循环
// 达到5个数值时就不再执行
while (count < 5)
{
// 声明变量用于保存输入的数值
int value = 0;
std::cin >> value;
// 每次新输入的数值都加到前面数值的总和里面
sum = sum + value;
// 输入数值的数量增加1个
count = count + 1;
} // 执行到这里会跳回上面的 while (count < 5) 重新判断
// 输出综合
std::cout << "5个数值的总和是:" << sum << std::endl;
return 0;
}
基础讲解 1
变量count
用于记录输入数值的数量,由于初始时没有输入数值,所以初始化为0。当每次输入一个数值之后,count
都会+1
,当count
达到5时,也就是说已经输入了5个数值的时候,此时因为while
的条件不成立而跳出循环,然后输出变量sum
的值。
而变量sum
用于保存5个数值的总和,由于初始时没有输入数值,所以初始化为0。在每次循环中都加上新输入的数值,这样就将5个数值加在一起,从而得出这5个数值的总和。
变量value
只用于每次循环的时候暂存输入的数值,所以将它的作用域限制在while
语句的{}
之间,也就是将变量value
的范围限制在最小的范围内。值得注意的是:由于变量value
是在while
语句的{}
里面,当离开这个}
时它就会消失,所以在每次循环中,变量value
都是重新创建的新变量。
基础示例 2
问题2:循环输入一个整数数值然后再输出这个整数数值,当输入的数值是0时退出循环,但不输出这个0。
#include <iostream> // std::cin std::cout std::endl
int main(void)
{
// 声明变量value用于保存输入的数值
int value = 0;
std::cin >> value;
// 当输入的数值是0则退出循环
while (value != 0)
{
// 输出前面输入的数值
std::cout << "你输入的是:" << value << std::endl;
// 保存输入的数值
std::cin >> value;
} // 执行到这里会跳回上面的 while (value != 0) 重新判断
return 0;
}
基础讲解 2
变量value
用于每次循环的时候暂存输入的数值。它不在while
语句里面的原因是:由于while
要用到value
,所以value
要放到while
的前面。
先声明一个变量value
,然后保存第一次输入的数值,然后判断这个数值是否为0。当这个数值不是0的时候执行{}
内的代码,由于刚才已经输入了一个数值,所以就需要输出这个数值,然后保存输入的数值,接着再重新判断新输入的数值是否为0。
巩固练习(用 while 语句实现)
- 输入n个小数,求它们的最小值、最大值和平均值。首先输入一个正整数n,代表后面要输入n个小数,然后输入n个小数,当输入完成后,输出它们的最小值、最大值和平均值。
- 输入若干个整数数值,求它们的最小值、最大值和平均值。循环输入整数数值直到输入数值0,当输入完成后,输出它们的最小值、最大值和平均值。
- 输出
1*1 + 2*2 + 3*3 + ... + 100*100
的结果。 - 输出
2^0 + 2^1 + 2^2 + ... + 2^63
的结果。 - 输出
1! + 2! + 3! + ... + 10!
的结果。 - 输出
1 + 1/1! + 1/2! + 1/3! + ...
的结果。 - 求π的值。提示
π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
的结果。 - 输入5个数,统计其中正数、负数和0的个数。
- 输入若干个整数数值,求其中的奇数之和与偶数之和。循环输入整数数值直到输入数值0,当输入完成后,输出它们的奇数之和与偶数之和。
- 输入一个小数
x
和一个整数y
,求x的y次方。(x
是正数,y
包括正数负数和0) - 求水仙花数(一个三位数,其各位数字立方和等于该数字本身)。
- 求斐波那契数列的第n项。斐波那契数列定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*),求第n项的值。
- 输入一个整数,输出这个整数的各数字反序的数值。如输入
123456
就输出654321
。 - 输入一个整数,输出这个整数的各位数之和。如输入
12345
就输出15
。 - 输出1000以内所有素数(素数定义:一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做素数或者质数)。
- 输出九九乘法表。