gpt4 book ai didi

C - 将用户生成的数字转换为单词的问题

转载 作者:太空宇宙 更新时间:2023-11-03 23:51:06 25 4
gpt4 key购买 nike

所以我一直在学习 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;
}

最佳答案

在您的reverseNumber 函数中您还没有初始化Rev。使 Rev=0

int reverseNumber (int y)
{
int cnt, Rev=0;
cnt = digitCount(y); //returns number of digits

printf("Digit count %d\n", cnt);
while (cnt != 0) {
Rev = Rev * 10 + y % 10;
y = y / 10;
cnt--;
}

return Rev;
}

do while 循环的 main 中使用临时变量,因为您要用 numberValue % 10 覆盖 numberValue >。但是您的程序中最讽刺的部分(您自己将所有事情复杂化)是根本不需要反转数字。看这里的代码

  1. 以用户输入的方式 - http://ideone.com/pORaP2
  2. 倒序 - http://ideone.com/5GS8al

当您找到模数时,您会得到倒序的数字本身。假设你输入了 234

  1. 第一步 234%10 给出 4 打印 four。然后将 234 变为 23

  2. 第二步 23%10 给出 3 打印 three。然后将 23 变为 2

然后最终打印two

关于C - 将用户生成的数字转换为单词的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19683709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com