因此,我一直在研究 Kochan 的 C 语言编程,但在其中一个问题上遇到了障碍,内容如下:
“编写一个程序,从终端输入一个整数,然后提取并以英文显示整数的每个数字。因此,如果用户输入 932,程序应显示以下内容:九三二(如果用户只输入 0.)"
我设法让程序将数字打印为单词,但不幸的是顺序相反。从那里我认为可以说反转数字可能是一个好主意,但是现在当我通过我的程序运行该值时,只打印出“一一一……”我输入的数字有多长在。
换句话说,最初我设法将 932 显示为“二三九”,但是当我试图反转数字并通过我的程序运行 239 时,我只得到“一一一”。
如果有人有任何提示可以为我指明正确的方向,我们将不胜感激!我的代码如下:
#include <stdio.h>
int digitCount (int);
int reverseNumber (int);
int main(void)
{
//Chapter 6 Problem 6
int x, numberValue;
printf("Enter the number you'd like converted to words\n");
scanf("%i", &x);
numberValue = reverseNumber(x);
printf("The reverse is %i\n", numberValue);
do {
numberValue = numberValue % 10;
switch (numberValue) {
case 0:
printf("zero\t");
break;
case 1:
printf("one\t");
break;
case 2:
printf("two\t");
break;
case 3:
printf("three\t");
break;
case 4:
printf("four\t");
break;
case 5:
printf("five\t");
break;
case 6:
printf("six\t");
break;
case 7:
printf("seven\t");
break;
case 8:
printf("eight\t");
break;
case 9:
printf("nine\t");
break;
default:
break;
}
x = x / 10;
} while (x != 0);
return 0;
}
int digitCount (int u)
{
int cnt = 0;
do {
u = u / 10;
cnt++;
} while (u != 0);
return cnt;
}
int reverseNumber (int y)
{
int cnt, Rev;
cnt = digitCount(y); //returns number of digits
while (cnt != 0) {
Rev = Rev * 10 + y % 10;
y = y / 10;
cnt--;
}
return Rev;
}