鱼C论坛

 找回密码
 立即注册
查看: 521|回复: 1

数字转换字母的问题

[复制链接]
发表于 2024-10-12 21:37:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

int main()
{
        char nums[][7] = {"one", "two", "three", "four", "five", "six",
                                                "seven", "eight", "nine", "ten", "eleven", "twelve"};
        char add[][6] = {"thir", "four", "fif", "six", "seven", "eigh", "nine"};
        char chs[32] = "";
        int num, i, j;
       
        strcpy(chs, ""); // 重新初始化
        flag = 0; // 重新初始化标志
               
        printf("请输入一个1~100之间的整数: ");               
        scanf("%d", &num);

        if (num <= 12)
        {
                strcat(chs, nums[num-1]);
        }
       
        if (12 < num && num < 20)
        {
                strcat(chs, add[num-13]);
                strcat(chs, "teen");
        }
       
        if (20 <= num && num < 100)
        {
                i = (int)num/10;
               
                if (i != 4 && i != 2)
                {
                        strcat(chs, add[i-3]);
                        strcat(chs, "ty");
                }
                else
                {
                        if (i == 2)
                        {
                                strcat(chs, "twenty");
                        }
                        if (i == 4)
                        {
                                strcat(chs, "forty");
                        } // 特殊情况
                }
               
                if (i == num/10)
                {
                        flag = 1;
                }
                if (i <= num/10)
                {
                        j = num-i*10-1;
                       
                        strcat(chs, "-");
                        strcat(chs, nums[j]);
                }
        }

        printf("%s", chs);

        return 0;
       

(可能有一些复制错了)
就是我输入20,30,...这些整十数,总会在结尾加一个"-",为什么?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-10-12 21:40:56 | 显示全部楼层
看起来你是在尝试编写一个程序,将数字转换为字母形式,不过你在程序中的许多地方都有些小问题。以下是对你代码的修正和建议:

1. **引入头文件**:你在代码中用了`#include`,但没有具体的头文件名。通常会是`#include <stdio.h>`和`#include <string.h>`。

2. **字符串存储**:需要用`char *`而不是`char[]`来存储字符串集合:

  
  1. char *nums[] = {"one", "two", "three", "four", "five", "six",
  2.                    "seven", "eight", "nine", "ten", "eleven", "twelve"};
复制代码


3. **字符串连接**:由于`chs`是一个字符数组,你不能直接用`chs = "";`这样初始化,而是应使用`strcpy`等函数。初始化`chs`之前还要分配足够的内存。

4. **未定义变量**:变量`flag`应该定义,不然会引发未定义错误。

5. **处理用户输入和数字转换**:你可以通过判断`num`的范围来选择对应的字符串:

  
  1. #include <stdio.h>
  2.    #include <string.h>
  3.    
  4.    int main()
  5.    {
  6.        char *nums[] = {"one", "two", "three", "four", "five", "six",
  7.                        "seven", "eight", "nine", "ten", "eleven", "twelve"};
  8.        char *add[] = {"thir", "four", "fif", "six", "seven", "eigh", "nine"};

  9.        int num;

  10.        printf("请输入一个1~100之间的整数: ");
  11.        scanf("%d", &num);

  12.        if (num >= 1 && num <= 12) {
  13.            printf("%s\n", nums[num - 1]);
  14.        } else if (num == 13) {
  15.            printf("thirteen\n");
  16.        } else if (num >= 14 && num <= 19) {
  17.            printf("%steen\n", add[num - 13]);
  18.        } else if (num == 100) {
  19.            printf("one hundred\n");
  20.        } else if (num >= 20 && num < 100) {
  21.            int tens = num / 10;
  22.            int ones = num % 10;
  23.            char *tens_word, *ones_word = "";

  24.            switch (tens) {
  25.                case 2: tens_word = "twenty"; break;
  26.                case 3: tens_word = "thirty"; break;
  27.                case 4: tens_word = "forty"; break;
  28.                case 5: tens_word = "fifty"; break;
  29.                case 6: tens_word = "sixty"; break;
  30.                case 7: tens_word = "seventy"; break;
  31.                case 8: tens_word = "eighty"; break;
  32.                case 9: tens_word = "ninety"; break;
  33.            }
  34.            if (ones > 0) {
  35.                ones_word = nums[ones - 1];
  36.            }
  37.            printf("%s %s\n", tens_word, ones_word);
  38.        } else {
  39.            printf("输入无效,请输入一个1~100之间的整数。\n");
  40.        }

  41.        return 0;
  42.    }
复制代码


以上是一个简单示例,包括从1到100的数字转换。确保代码逻辑上处理了用户输入的各种情况。希望这对你有所帮助!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-7 16:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表