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 请问为什么我配置IPsec后PC1 ping不通 PC2,抓包出来数据包也并没有被加密
  • ¥200 求博主教我搞定neo4j简易问答系统,有偿
  • ¥15 nginx的使用与作用
  • ¥100 关于#VijeoCitect#的问题,如何解决?(标签-ar|关键词-数据类型)
  • ¥15 一个矿井排水监控系统的plc梯形图,求各程序段都是什么意思
  • ¥50 安卓10如何在没有root权限的情况下设置开机自动启动指定app?
  • ¥15 ats2837 spi2从机的代码
  • ¥200 wsl2 vllm qwen1.5部署问题
  • ¥100 有偿求数字经济对经贸的影响机制的一个数学模型,弄不出来已经快要碎掉了
  • ¥15 数学建模数学建模需要