问题:编写C++程序,实现功能:统计输入数据中每个数值连续出现的次数。
功能实现的C++源程序代码:
#include "iostream"
using namespace std;
int main()
{
// currVal 为当前统计的数; inVal为将要输入的新值
int currVal = 0, inVal = 0;
// 读取第一个数,并确保确实有数据可以处理
if (cin >> currVal)
{
int cnt = 1; // 初始化正在统计的当前值的个数
while (cin >> inVal) // 继续读取数据
{
if (inVal == currVal) // 判断输入数字是否与上一个数字相同
++cnt; // 相同则统计值加 1
else
{
cout << currVal << " occurs " <<
cnt << " times." << endl; // 不同则输出当前值的个数
currVal = inVal; // 并将新出现的数值作为统计新值
cnt = 1; // 统计值还原为 1
}
}
cout << currVal << " occurs " << cnt << " times." << endl;
}
return 0;
}例如,我们输入数据: 12 12 12 12 55 55 3 66 66,输入结束后,按回车键输出结果为:
12 occurs 4 times.
55 occurs 2 times.
3 occurs 1 times.
66 occurs 2 times.
Tips: 要得到上述结果,一定要输入“文件结束符”。
思考1: 如果输入时没有输入“文件结束符”(数据输入完成后直接敲击Enter键或Return键),输出结果是怎样?
按照上面给出的例子,我们在输入结束后输入“文件结束符”,得到的结构如下:
上面显示的结果是我们预期的。
但是如果我们不输入“文件结束符”,得到的结果却是这样的:
从程序运行结果可以看出,没有输入“文件结束符”时敲击Enter键,程序并没有完成对所有的输入数据的统计和打印工作。这时候程序仍然处于等待输入的状态。如果我们继续输入,直到我们输入“文件结束符”,程序才算真正执行完,如下图:
思考2:如果输入数据时输入同一个数值,输出结果是怎样?如果输入的数据所有数字都不相同,结果又是怎样?
如果输入数值全部相同:
其运行结果是我们预期想要得到的。如果输入数值全不相同:
运行结果也是我们预期要得到的。
思考3:如果同一数值在不同的位置出现重复,输出的结果是怎样?
程序的功能实现了统计某一数值连续出现的次数。
版权声明:本文为linhuanzhi原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。