将号码转换为汉语拼音。减号等于“fu”。
# 数字:拼音
0: ling
1: yi
2: er
3: san
4: si
5: wu
6: liu
7: qi
8: ba
9: jiu
#include <stdio.h>
int main() {
char ipt[100];
char py[10][6] = {"ling", "yi", "er", "san", "si", "wu", "liu", "qi", "ba", "jiu"};
fgets(ipt, 100, stdin);
int i = 0;
if (ipt[0] == '-') {
printf("%s ", "fu");
i++;
}
for (i; i < strlen(ipt); i++) {
if (i < strlen(ipt) - 1)
printf("%s ", py[ipt[i] - '0']);
else
printf("%s", py[ipt[i] - '0']);
}
return 0;
}
我输入600,输出是“liu ling ling”。我测试了其他一些数字,看起来都不错,但检查网站说我错了。
函数
fgets
可以在对应的字符数组有空格的情况下将换行符'\n'
追加到输入的字符串中。
您应该将其删除,例如
ipt[ strcspn( ipt, "\n" ) ] = '\0';
否则,您的代码还会输出换行符的字符串。
你忽略了
fgets()
的返回值:
fgets(ipt, 100, stdin);
fgets()
返回空指针以指示失败。此外,fgets()
在输入中包含换行符(如果可能)。剥离它的最简单的解决方案是:
ipt[strcspn(ipt, "\n")] = 0;