m0_62282054 2022-01-29 21:13 采纳率: 89.6%
浏览 41
已结题

代码哪里出现了问题,应该怎么修改

#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;
}

img

img

  • 写回答

2条回答 默认 最新

  • 程序猿那么可爱 2022-01-29 22:12
    关注

    img


    因为c[i]是数字字符,而不是数字,所以会出现问题。

    解决方法一:根据ASCII码,一个数字字符减去0字符可得到这个数字,比如'9'-'0'=9

    解决方法二:强制类型转换 (int)xxx 将数字字符转换为数字(我记得是有这么个办法 ,但是我的电脑编译不成功,你可以再查查)

    解决方法三:每个条件的等号右边改成字符,比如c[i]=='1'

    其他:

    如果是负数,完了得break,否则还会输出负号后数字对应的拼音

    if内部语句如果只有一条,建议不要加{} ,改成图上写法,会简洁很多

    最后一个问题:因为题目要求最后一个数字拼音后面不要加空格,你写了两遍。这个问题一定有优化方法,我觉得可以用二维数组,要是没学的话,你可以等学了以后试试噢,加油!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 1月29日

悬赏问题

  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图