我在编写此程序的输出语句时遇到问题。正确的输出应该打印与其数值相同的输入数字。
答案 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
的情况。如果您在循环后检查switch
,standard == 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
增加一(++i
或i++
)
最后,正如您所看到的,我在我的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语句和计数器。只需将每个输入存储在数组中自己的位置。