【发布时间】:2014-03-27 22:35:38
【问题描述】:
我想知道如何反转我的输出以匹配输入的数字。
例如,如果用户输入543210,我希望输出为:Five Four Three Two One Zero。但相反,它被反转了,我不知道如何反转它。
我不能使用循环或其他任何东西。
代码:
int main(void){
int value;
int digit;
printf("enter:");
scanf("%i", &value);
while(value)
{
digit = value % 10;
value = value / 10;
if(digit != 0)
{
switch(digit)
{
case 0:
printf("zero ");
break;
case 1:
printf("one ");
break;
case 2:
printf("two ");
break;
case 3:
printf("three ");
break;
case 4:
printf("four ");
break;
case 5:
printf("five ");
break;
case 6:
printf("six ");
break;
case 7:
printf("seven ");
break;
case 8:
printf("eight ");
break;
case 9:
printf("nine ");
break;
}
}
}
return 0;
}
示例:如果用户输入 1234
输出将是:四三二一。
我将如何解决它:一二三四。
【问题讨论】:
-
您熟悉递归这个概念,还是有兴趣看到新事物?
-
将它们转换为字符串似乎是解决这个问题的最自然方法。
-
将数据存储到字符串数组中,而不是直接打印出来。一旦你完成反向打印它们,你就有了。这是我想到的第一件事,但我敢打赌,这个问题有更好的解决方案。
-
那么递归确实是您的解决方案。但是您已经使用了一段时间(只是说)
-
注意:您测试 if digit != 0 并且在 if 语句中,您在 digit 上执行一个值为 0 的 switch case。这是浪费空间,因为它保证不会发生。去掉 if 语句,这样输入 0 仍然可以打印值。
标签: c