鱼C论坛

 找回密码
 立即注册
查看: 91|回复: 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,...这些整十数,总会在结尾加一个"-",为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

char *nums[] = {"one", "two", "three", "four", "five", "six", 
                   "seven", "eight", "nine", "ten", "eleven", "twelve"};

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

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

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

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

       int num;

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

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

           switch (tens) {
               case 2: tens_word = "twenty"; break;
               case 3: tens_word = "thirty"; break;
               case 4: tens_word = "forty"; break;
               case 5: tens_word = "fifty"; break;
               case 6: tens_word = "sixty"; break;
               case 7: tens_word = "seventy"; break;
               case 8: tens_word = "eighty"; break;
               case 9: tens_word = "ninety"; break;
           }
           if (ones > 0) {
               ones_word = nums[ones - 1];
           }
           printf("%s %s\n", tens_word, ones_word);
       } else {
           printf("输入无效,请输入一个1~100之间的整数。\n");
       }

       return 0;
   }

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-21 23:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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