来自M78的光之文轩 2022-10-20 19:10 采纳率: 92%
浏览 61
已结题

求句子中单词的长度 自己的代码找不出错误

代码找不出错误在哪
原题在http://noi.openjudge.cn/ch0107/24/


#include <stdio.h>
#include <string.h>
int main(){
    char s[1000][999]={'\0'},ch;
    int op=0,oq=0,i,t,e=0;
    while(scanf("%c", &ch),ch!='\n')
    {
        if(ch==' '){
            op++;
            oq=0;
        }
        else{
            s[op][oq++]=ch;
        }
    }
    for(i=0;i<=op;i++){
        if(s[i][0]=='\0') continue;
        t=strlen(s[i]);
        if(e==0){
            printf("%d", t);
            e=1; 
        }
        else{printf(",%d", t);}
    }
    return 0;
}
  • 写回答

3条回答 默认 最新

  • 关注

    代码逻辑没有大问题,可能是在一些临界值或者特殊情况的时候处理有问题,比如只有1个单词的时候,单词长度为999,你定义的数组就无法正确的获取字符串的长度,因为没有给\0预留位置。
    你先尝试把s[1000][999]改成s[300][1000] ,运行看看是否可以,如果还不行,用我下面的代码试一下,下面的代码修改了一下逻辑,把空字符串全部过滤掉了。

    #include <stdio.h>
    #include <string.h>
    int main(){
        char s[300][1000]={'\0'},pre = 0,ch;
        int op=0,oq=0,i,t,e=0;
        while(scanf("%c", &ch),ch!='\n')
        {
            if(ch == ' ')
                oq = 0;
            else 
            {
                if(pre ==' ')
                {
                    op++;
                    s[op][oq++] = ch;
                }else
                    s[op][oq++] = ch;
            }
            pre = ch;
        }
        for(i=0;i<=op;i++){
            //if(s[i][0]=='\0') continue;
            t=strlen(s[i]);
            if(t == 0)
                continue;
            if(e==0){
                printf("%d", t);
                e=1; 
            }
            else{printf(",%d", t);}
        }
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月30日
  • 已采纳回答 10月22日
  • 创建了问题 10月20日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。