【问题标题】:I am trying write a C program to print the string form for an integer. [closed]我正在尝试编写一个 C 程序来打印整数的字符串形式。 [关闭]
【发布时间】:2014-10-02 01:46:13
【问题描述】:

我正在尝试编写一个 C 程序来打印整数的字符串形式。例如 1234 -> 一二三四。有没有可以转换它的函数或者我会创建一个数组来做到这一点?

【问题讨论】:

  • 您必须手动完成。

标签: c string integer


【解决方案1】:

一个简单的递归解决方案:

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);
}

【讨论】:

  • 递归避免了找出位数(如我的答案计算)或存储部分输出字符串的需要。很好的解决方案。 +1。
  • @Will True fputc(' ', stdout) 等价于putchar(' ')。由于代码使用fputs(..., stdout),我发现使用fputc(..., stdout) 更一致,因此可以对其他输出流进行简单的更改。
【解决方案2】:

我认为您没有直接转换为文本的功能。但是你可以做这样的事情

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 时不打印任何内容,期望“零”。
【解决方案3】:

没有功能可以做到这一点。你需要手动完成。我给你的代码会帮助你。

#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 --> "" ,期望“零”。
  • 哦是的!...也许我...读错了。
  • 这里还可以做一件事。只需将数字分解为数字并将它们保存在数组中。然后反转数组并将数组的每个元素传递给 check_print() 函数。它会工作
猜你喜欢
  • 2022-06-22
  • 2021-04-12
  • 1970-01-01
  • 2021-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2020-06-14
相关资源
最近更新 更多