C ++开关语句计数输出

时间:2011-04-11 00:06:10

标签: c++ for-loop switch-statement

我在编写此程序的输出语句时遇到问题。正确的输出应该打印与其数值相同的输入数字。

4 个答案:

答案 0 :(得分:1)

你肯定需要在while循环中移动switch语句(编辑:这是基于OP的初始代码发布)。

答案 1 :(得分:1)

看起来你想要类似的东西:

#include <iostream>

using namespace std;

int main()
{
    int standard, count1, count2, count3, count4, count5;

    // Initialize your int's
    standard = count1 = count2 = count3 = count4 = count5 = 0;

    do {
        cout<< "Enter value: ";
        cin >> standard;

        // Switch through your cases
        switch(standard)
        {
        case 1:
            count1++;
        break;
        case 2:
            count2++;
        break;
        case 3:
            count3++;
        break;
        case 4:
            count4++;
        break;
        case 5:
            count5++;
        break;
        }
    } while(standard != 0);

    // Do this type of loop for all your count vars
    for(int i=0;i<count1;++i)
        cout<< "1";

    for(int i=0;i<count2;++i)
        cout<< "2";

    // And so on...

    return 0;
}

对于for循环,请注意您将从0到<总数。如果你去了<=,你会通过那个号码。范围[0,4] = 5(或者在我们的情况下为[0,5)整数集),[1,5]也是如此,所以请记住您的抵消。祝你好运!

编辑:还要认识到switch语句的位置已被移动。通过将它放在循环中,实际上每次它在循环中运行时都会计数。例如,循环“阻止”(换句话说,它等待输入)在cin行。当它收到一个输入时(虽然你没有错误检查,所以非int值可能导致段错误),然后它会根据switch语句检查它并相应地增加。

通过将switch语句放在循环之外(就像你最初的那样),请意识到没有任何反应。您的default声明中没有switch条件,也没有处理0的情况。如果您在循环后检查switchstandard == 0,因为这是您首先退出循环的方式(因此,将保留标准的最后一个值)。

此外,重新访问for循环语法。这可以用几种方式完成,这里有很多很好的文章可以帮助你进一步使用搜索功能,但它基本上是这样的:

for(STARTING_POINT;SOME_CONDITION;SOME_CHANGE);

STARTING_POINT =应该开始循环的值 SOME_CONDITION =当此条件为真时,循环将终止 SOME_CHANGE =如何更改变量(即从起点开始)直到达到条件

这样的循环看起来像这样:

for(int i=1;i<=5;++i){ ... }

表示将int i初始化为值1 直到i <= 5完成循环 然后,在每次迭代时,将i增加一(++ii++

最后,正如您所看到的,我在我的int中添加了一个初始化行。这样做是为了给变量一些起始值而不是垃圾值。

我希望这会有所帮助

的问候,
丹尼斯M。

答案 2 :(得分:0)

我真的不明白你想要完成什么,但这部分在这里:

  for (count1=0; count1<=5; count1++)
        cout << "1";

无论输入如何,都要连续6次打印'1'。你能解释一下你想要做的更多吗?

答案 3 :(得分:0)

这是我的解释:你想输入一个数字序列(以零结尾),然后使用循环输出那些完全相同的数字。

这里有一些伪代码可以给你一个提示。

Declare an array of int's large enough to hold all your input numbers.
Declare a counter c = 0.

Begin loop while input is not 0
    Input number from user and store it in array[c].
    Increment counter c.
End loop

Begin loop i from 0 to c-1
    Output number that is in array[i].
End loop

无需为每个可能的号码使用switch语句和计数器。只需将每个输入存储在数组中自己的位置。