【问题标题】:using a while loop to count and display numbers使用 while 循环来计算和显示数字
【发布时间】: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。 0131234.

标签: c++ visual-studio visual-studio-2013


【解决方案1】:

您接受输入为int,然后检查char。如果您真的想检查每个char,您应该接受string,然后使用for 循环遍历每个字母。

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int zeros = 0;
    int ones = 0;
    int twos = 0;
    int threes = 0;
    int fours = 0;

    string number;


    cout << "Please enter a base 5 number\n";
    cin >> number;
    cout << endl;

    for (char digit : number)
    {
        if (digit == '0')
        {
            zeros++;
        }
        else if (digit == '1')
        {
            ones++;
        }
        else if (digit == '2')
        {
            twos++;
        }
        else if (digit == '3')
        {
            threes++;
        }
        else if (digit == '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;
}

Live Demo

除了将一堆变量作为计数器保存之外,您还可以只使用一个数组

#include <iostream>
#include <string>
using namespace std;

int main()
{
    int counts[5] = {0, 0, 0, 0, 0};   
    string number;   

    cout << "Please enter a base 5 number\n";
    cin >> number;
    cout << endl;

    for (char digit : number)
    {
        if (digit == '0')
        {
            counts[0]++;
        }
        else if (digit == '1')
        {
            counts[1]++;
        }
        else if (digit == '2')
        {
            counts[2]++;
        }
        else if (digit == '3')
        {
            counts[3]++;
        }
        else if (digit == '4')
        {
            counts[4]++;
        }
    }

    cout << "Number of Zeros: " << counts[0];
    cout << endl;
    cout << "Number of Ones: " << counts[1];
    cout << endl;
    cout << "Number of Twos: " << counts[2];
    cout << endl;
    cout << "Number of Threes: " << counts[3];
    cout << endl;
    cout << "Number of Fours: " << counts[4];
    cout << endl;
    return 0;
}

【讨论】:

  • 我相信 for 循环和字符串变量正是我想要的,这个响应让我思考了很多。正如我之前所说,在这种情况下我不能使用数组,因为它现在只是适当材料的一部分。如果这可行,我唯一的最后一个担心是如何在开始 for 循环之前测试它是否实际上是一个以 5 为基数的数字?我可能会使用布尔类型变量吗?
猜你喜欢
  • 2011-09-29
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-27
  • 2021-12-19
  • 2017-07-23
相关资源
最近更新 更多