【发布时间】:2021-10-06 12:16:12
【问题描述】:
所以我在这里尝试编写一个代码,将数字转换为其拼写格式。例如,用户输入任何数字,如 320,则输出应为“三二零”。以下是我尝试过的-
#include <stdio.h>
void main(){
long int num,rev=0 ;
printf("Enter any number to print in words: ");
scanf("%ld",&num);
while(num!=0){
rev=(rev*10)+(num%10);
num/=10 ;
}
while(rev!=0){
long int x=rev%10;
switch(x){
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;
}
}
}
现在的问题是,这段代码正在产生一个无限循环,就像我输入一个数字说 21,然后它开始打印“二二二二.........”直到无穷大。
请帮我解决这个问题。
【问题讨论】:
-
进行基本调试。在调试器中运行您的程序并在运行时检查变量。当然,您可以轻松找出无限循环发生的原因。哪个变量具有导致该值的意外值(实际上只有一个)?您期望该变量值是什么,为什么它不是您期望的值?这些都是基本问题,即使是最简单的调试也可以回答。 How to debug small programs.
-
long int x=rev%10;之后,rev=rev/10; -
while(rev!=0)在这个循环中你永远不会改变rev,那么你怎么期望它变成0? -
@sittsering 是的,我明白了,谢谢 :)
标签: c loops switch-statement infinite-loop