【发布时间】:2014-10-02 01:46:13
【问题描述】:
我正在尝试编写一个 C 程序来打印整数的字符串形式。例如 1234 -> 一二三四。有没有可以转换它的函数或者我会创建一个数组来做到这一点?
【问题讨论】:
-
您必须手动完成。
我正在尝试编写一个 C 程序来打印整数的字符串形式。例如 1234 -> 一二三四。有没有可以转换它的函数或者我会创建一个数组来做到这一点?
【问题讨论】:
一个简单的递归解决方案:
void print_number(unsigned x) {
static const char *digit[10] = {
"zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine" };
if (x >= 10) {
print_number(x / 10);
fputc(' ', stdout);
}
fputs(digit[x % 10], stdout);
}
【讨论】:
fputc(' ', stdout) 等价于putchar(' ')。由于代码使用fputs(..., stdout),我发现使用fputc(..., stdout) 更一致,因此可以对其他输出流进行简单的更改。
我认为您没有直接转换为文本的功能。但是你可以做这样的事情
C 代码来转换英文单词中数字的每个数字
#include<stdio.h>
int main(){
int number,i=0,j,digit;
char * word[1000];
printf("Enter any integer: ");
scanf("%d",&number);
while(number){
digit = number %10;
number = number /10;
switch(digit){
case 0: word[i++] = "zero"; break;
case 1: word[i++] = "one"; break;
case 2: word[i++] = "two"; break;
case 3: word[i++] = "three"; break;
case 4: word[i++] = "four"; break;
case 5: word[i++] = "five"; break;
case 6: word[i++] = "six"; break;
case 7: word[i++] = "seven"; break;
case 8: word[i++] = "eight"; break;
case 9: word[i++] = "nine"; break;
}
}
for(j=i-1;j>=0;j--){
printf("%s ",word[j]);
}
return 0;
}
样本输出:
输入任意整数:23451208
二三四五一二零八
这也是之前提出的问题。所以参考链接Convert digit to text in C
【讨论】:
number == 0 时不打印任何内容,期望“零”。
没有功能可以做到这一点。你需要手动完成。我给你的代码会帮助你。
#include<stdio.h>
void check_print(int k);
int main()
{int n,i,m;
printf("Enter any number");
Scanf("%d",&i);
n=i;
while(n!=0)
{
m=n%10;
check_print(m);
n=n/10;
}
}
void check_print(int k)
{
switch(k)
{
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;
}
}
【讨论】:
123 --> “三二一”,期望“一二三”。 0 --> "" ,期望“零”。