#include<stdio.h>
#include<string.h>
int main()
{
char c[100];
int l;
int i;
gets(c);
l=strlen(c);
for(i=0;i<l-1;i++)
{
if(c[i]=='-')
{
printf("fu ");
}
else if(c[i]==0)
{
printf("ling ");
}
else if(c[i]==1)
{
printf("yi ");
}
else if(c[i]==2)
{
printf("er ");
}
else if(c[i]==3)
{
printf("san ");
}
else if(c[i]==4)
{
printf("si ");
}
else if(c[i]==5)
{
printf("wu ");
}
else if(c[i]==6)
{
printf("liu ");
}
else if(c[i]==7)
{
printf("qi ");
}
else if(c[i]==8)
{
printf("ba ");
}
else if(c[i]==9)
{
printf("jiu ");
}
}
if(i==l-1)
{
if(c[i]==0)
{
printf("ling");
}
else if(c[i]==1)
{
printf("yi");
}
else if(c[i]==2)
{
printf("er");
}
else if(c[i]==3)
{
printf("san");
}
else if(c[i]==4)
{
printf("si");
}
else if(c[i]==5)
{
printf("wu");
}
else if(c[i]==6)
{
printf("liu");
}
else if(c[i]==7)
{
printf("qi");
}
else if(c[i]==8)
{
printf("ba");
}
else if(c[i]==9)
{
printf("jiu");
}
}
return 0;
}
代码哪里出现了问题,应该怎么修改
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 程序猿那么可爱 2022-01-29 22:12关注
因为c[i]是数字字符,而不是数字,所以会出现问题。解决方法一:根据ASCII码,一个数字字符减去0字符可得到这个数字,比如'9'-'0'=9
解决方法二:强制类型转换 (int)xxx 将数字字符转换为数字(我记得是有这么个办法 ,但是我的电脑编译不成功,你可以再查查)
解决方法三:每个条件的等号右边改成字符,比如c[i]=='1'
其他:
如果是负数,完了得break,否则还会输出负号后数字对应的拼音
if内部语句如果只有一条,建议不要加{} ,改成图上写法,会简洁很多
最后一个问题:因为题目要求最后一个数字拼音后面不要加空格,你写了两遍。这个问题一定有优化方法,我觉得可以用二维数组,要是没学的话,你可以等学了以后试试噢,加油!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥15 单片机学习顺序问题!!
- ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
- ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
- ¥15 相敏解调 matlab
- ¥15 求lingo代码和思路
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 如何绘制动力学系统的相图