gpt4 book ai didi

c - 取一个数字并输出其英文单词的算法

转载 作者:太空狗 更新时间:2023-10-29 15:43:53 24 4
gpt4 key购买 nike

我想用 C 编写一个程序,它会要求用户输入一个数字,然后它会用英文打印该数字。

例如:

if(INPUT == 1) then print ONE
if(INPUT == 2) then print TWO

等等。它可以使用 switch-case 和 if else 来制作,但它会使代码冗长。对于几个数字来说没问题,但如果我们必须写到 100 个,那么它就会很长。

是否有一个简短的算法或想法?

最佳答案

您可以使用下面的内容,但这最多只能打印几千个。我这样做是为了解决一些特定的编程问题。这就是为什么我没有超过数千人。但是扩展到更大的数字并不难。此外,这个程序还可以优化或变得更清晰。

#include <stdio.h>
#include <string.h>

void print(int num) {
char digit [21][10] = { "", "one", "two", "three", "four", "five", "six", "seven",
"eight", "nine", "ten", "eleven", "twelve", "thirteen",
"fourteen", "fifteen", "sixteen", "seventeen", "eighteen",
"nineteen"};
char tens [11][10] = { "", "", "twenty", "thirty", "forty", "fifty", "sixty",
"seventy", "eighty", "ninety"};
char str[1000] = {0};
int prev=0, div=1000;
strcpy(str, "");

while(div) {

if ((num / div) % 10 > 0 || (div == 10 && (num%100) > 0)) {

if (prev) {
strcat(str, "and");
prev = 0;
}

switch(div) {
case 1000:
strcat(str, digit[(num / div) % 10]);
strcat(str, "thousand");
prev = 1;
break;
case 100:
strcat(str, digit[(num / div) % 10]);
strcat(str, "hundred");
prev = 1;
break;
case 10:
if ( (num%100) >= 10 && (num%100) <= 19)
strcat(str, digit[num%100]);
else {
strcat(str, tens[(num%100)/10]);
strcat(str, digit[num%10]);
}
break;
}
}

div /= 10;
}
printf("%d %s\n", num, str);

}
int main(int argc, char **argv) {

long sum = 0;
int count = 0;

if (argc <= 1) {
fprintf(stderr, "wrong number of arguments\n");
return -1;
}

print(atoi(argv[1]));

return 0;
}

关于c - 取一个数字并输出其英文单词的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6951913/

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