【发布时间】:2015-03-23 12:20:32
【问题描述】:
我遇到的问题需要让用户输入“以 5 为基数的数字” (仅包含 0、1、2、3 或/和 4 的数字)
我必须测试这个数字是否真的是一个以5为底的数字,如果是,我必须输出每个数字的出现次数(0的数量,1的数量等)
我已经在网上寻找建议,但我发现的大部分内容都使用了课程材料中未涵盖的内容,我理解并掌握与课程相关的材料对我来说非常重要。
例如,我知道大多数人会为此使用“数组”,但在这种情况下我不能这样做。
因此,要明确我正在寻找什么,就是能够使用 WHILE 循环执行此问题中所需的内容。
这是我的尝试之一:
#include <iostream>
using namespace std;
int main()
{
int zeros = 0;
int ones = 0;
int twos = 0;
int threes = 0;
int fours = 0;
int number;
cout << "Please enter a base 5 number\n";
cin >> number;
cout << endl;
while (cin.get() == '0')
{
zeros++;
}
while (cin.get() == '1')
{
ones++;
}
while (cin.get() == '2')
{
twos++;
}
while (cin.get() == '3')
{
threes++;
}
while (cin.get() == '4')
{
fours++;
}
cout << "Number of Zeros: " << zeros;
cout << endl;
cout << "Number of Ones: " << ones;
cout << endl;
cout << "Number of Twos: " << twos;
cout << endl;
cout << "Number of Threes: " << threes;
cout << endl;
cout << "Number of Fours: " << fours;
cout << endl;
return 0;
}
我尝试过在数字周围加单引号和不加单引号,以及代码的许多其他细微变化都无济于事。 另外我相信在使用“while”之前我缺少一个“if”语句来测试它是否实际上是一个以 5 为基数的数字,但我只是想不出一种方法来测试它
可能是这样的:
while (cin.get() != '0' || '1' || '2' || '3' || '4')
......
?
无论哪种方式,在这种情况下,“while”甚至都不算数,我不知道为什么!
另外,我选择尝试这种方法的原因(除了需要使用 while 循环和其他相关的课程相关主题),我在以前的程序中使用了相同的方法,效果很好。前一个本质上是用户输入一个字符串,我必须计算并输出其中的字符数(包括空格、符号等),直到用户点击“return”。这是旧代码的一部分:
char input;
int counter = 0;
while (cin.get() != '\n')
{
counter++;
}
tl;dr 输入以5为底的数字,count+输出每个数字出现的次数,必须使用while循环
【问题讨论】:
-
据我所知,您实际上并没有解释您面临的问题。我不明白这些
cin.get()循环。您是否尝试解析number? -
您的程序只允许输入数字按升序排列... e。 G。
013或1234.
标签: c++ visual-studio visual-studio-2013