gpt4 book ai didi

c - 将数字打印为单词

转载 作者:行者123 更新时间:2023-11-30 21:48:15 25 4
gpt4 key购买 nike

如何将用户输入的数字打印为单词?例如,假设我输入数字 123,然后我希望打印“一二三”行。

以下是我的尝试:

#include<stdio.h>
int main()
{
int i=0,a,c,o=0,p;

printf("enter the number you want ");

scanf("%d",&a);
c=a;


while(a !=0)
{
a=a/10;
i++;
}
while(o<=i)
{
p=c%10;
c=c/10;
if(p==1)
printf(" one ");
else if(p==2)
printf(" two ");
else if(p==3)
printf(" three ");
else if(p==4)
printf(" four ");
else if(p==5)
printf(" five ");
else if(p==6)
printf(" six ");
else if(p==7)
printf(" seven ");
else if(p==8)
printf(" eight " );
else if(p==9)
printf(" nine ");
else if(p==0)
printf(" zero ");

o++;

}

return 0;
}

它正在打印一个额外的零。我该如何解决这个问题?

最佳答案

额外的零来自这里:

while(o<=i)

i 是位数。由于 o 从 0 开始,范围从 0 到 i,因此您需要额外执行一次循环。此时,c 为 0,因此这就是打印的内容。

您可以通过改变您的条件来解决此问题:

while(o<i)

但是还有另一个问题。该程序以相反的顺序打印单词。您可以通过将数字保存在数组中,然后向后循环该数组来打印数字来解决此问题。

#include<stdio.h>
int main()
{
int i=0,a,p;
int digits[25]; // enough for a 64-bit number
// list of digits names that can be indexed easily
char *numberStr[] = { " zero ", " one ", " two ", " three ", " four ",
" five ", " six ", " seven ", " eight ", " nine " };

printf("enter the number you want ");

scanf("%d",&a);

while(a !=0)
{
// save each digit in the array
digits[i] = a%10;
a=a/10;
i++;
}
i--; // back off i to contain the index of the highest order digit

// loop through the array in reverse
while(i>=0)
{
p=digits[i];
printf("%s", numberStr[i]);
i--;
}

return 0;
}

关于c - 将数字打印为单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48442694/

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