数字转换字母的问题
#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"};
char chs = "";
int num, i, j;
strcpy(chs, ""); // 重新初始化
flag = 0; // 重新初始化标志
printf("请输入一个1~100之间的整数: ");
scanf("%d", &num);
if (num <= 12)
{
strcat(chs, nums);
}
if (12 < num && num < 20)
{
strcat(chs, add);
strcat(chs, "teen");
}
if (20 <= num && num < 100)
{
i = (int)num/10;
if (i != 4 && i != 2)
{
strcat(chs, add);
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);
}
}
printf("%s", chs);
return 0;
(可能有一些复制错了)
就是我输入20,30,...这些整十数,总会在结尾加一个"-",为什么?
看起来你是在尝试编写一个程序,将数字转换为字母形式,不过你在程序中的许多地方都有些小问题。以下是对你代码的修正和建议:
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);
} else if (num == 13) {
printf("thirteen\n");
} else if (num >= 14 && num <= 19) {
printf("%steen\n", add);
} 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;
}
printf("%s %s\n", tens_word, ones_word);
} else {
printf("输入无效,请输入一个1~100之间的整数。\n");
}
return 0;
}
以上是一个简单示例,包括从1到100的数字转换。确保代码逻辑上处理了用户输入的各种情况。希望这对你有所帮助!
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]