循环次数已知的情况一般用for循环,循环次数不易预知的情况用while循环。
实现对用户输入的一组数据求和,这种情况下,我们预先不知道要对多少个数求和,因此需要不断读取数据直至没有新的输入为止,因此可将读取数据行代码放入while判断语句内。代码如下:
// primer_1_4_3.cpp
//读取数量不定的输入数据进行求和
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
cout << "input the numbers: " << endl; //提示语句
int a=0,sum=0;
while(cin >> a) //对输入进行判断
sum = sum+a; //求和
cout << "sum: " << sum << endl;
system("pause"); //防止对话框不闪退
return 0;
}
但是该代码存在一个问题,输入“Enter”键后并不会输出结果,如图:
只有当输入与a类型不匹配的数据时,才能输出结果,如图:
而且要注意,这里是求的1 2 3 5 7的和,并不是1 2 3 5的和,相当于识别到“.”和a类型不匹配,输出结果。
一般为了区分,可以在有效字符输入完成后,用字母作为结束符,如图
也可以将程序写得更优化一些,将提示语改为:
cout << "input the numbers: (enter 'E' to quit)" << endl; //提示语句
效果如下: