2301_79791732 2023-11-12 19:04 采纳率: 37.5%
浏览 6
已结题

为什么输出会有乱码,有哪里错了

题目如图

img

#include <stdio.h>
#include <string.h>

int main()


{
    char b[500];
    int i, j, max, min,s,c,d,l,p;
    i = 0;
    s = 1;
    max = 0;
    min = 0;
    p = 0;
    l = 0;
    c = 0;
    d = 0;
    fgets(b, 500, stdin);

    
    for (j = 0; j < strlen(b); j++) {
        if (b[j] == ' '||b[j]=='\n') {
            if (max < s) {
                max = s;
                c = j - 1;

            }
             if (min > s||min==0) {
                min = s;
                d = j-1;

            }
            s = 0;
        }
        else s = s + 1;
    }
    for (l = c - max+1; l <=c; l++) {
        putchar(b[l]);
    }
    printf("\n");
    for (p = d - min + 1; p <=d; p++) {
        putchar(b[p]);
    }
    printf("\n");
    
    
    

    return 0;
}


img

  • 写回答

2条回答 默认 最新

  • 柯本 2023-11-12 19:58
    关注

    你的初始化s=1错了
    当你的数据的第一个为最段字串时,min=2,d=0
    这样,p = d - min + 1=-1;你输出的第一个字符是b[-1]和b[0],b[-1]是随机的,它高位为1的话可能就是你的乱码了
    要改s=0

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

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月12日