一包笼子 2023-12-16 23:17 采纳率: 83.3%
浏览 40
已结题

c语言 找出最长字符串

c语言 求出最长字符串
描述:求出字符串中最长的字符串。每个字符串长度在100以内,且全为小写字母
输入:用空格分隔的字符串。每个字符串长度在100以内,且全为小写字母。
输出:长度最长的字符串
例题:输入:one two three four five 输出:three
问题:没有输出

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(){
    char a[9999];
    int b[100],k=0;
    gets(a); 
    int len=strlen(a);//算出数组a的长度(包括/0) 
    for(int i=0;i<len;i++){
        if(a[i]=='/0'){//遇到空格时,数组b存长度 
            b[k]=i-1;
            k++;
        }
    }
    int max=b[0],p;
    for(int j=0;j<k;j++){
        if(b[j]>=max){//把数组b最大值找出来,最长的就是j+1的字符串 
            max=b[j];
            p=j;
        }
    }
    int sum=0;//sum是最长字符串之前的字符个数 
    for(int j=0;j<p;j++){
        sum+=b[j];
    }
    sum+=p-1;
    for(int i=sum+1;i<=sum+b[p];i++){
        printf("%c",a[i]);//从sum+1开始打印,打印出最长字符串 
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • 柯本 2023-12-16 23:24
    关注

    你的算法完全不对,首先,空格不是'/0',它就是' ',其次 b[k]=i-1;i每次都在增加的,i-1不是单词长度的
    我写了个参考:

    #include <stdio.h>
    #include <string.h>
    int main()
    {
      int ct, maxct;
      char c, s[31], ms[31];
      ct = maxct = 0;
      while ((c = getchar()) != '\n')
        {
          if (c == ' ') //单词以空格分隔
            {
              if (ct > maxct)
                {
                  maxct = ct;
                  s[ct] = '\0';
                  strcpy(ms, s);
                }
              ct = 0;
            }
          else
            s[ct++] = c;
        }
      if (ct > maxct) //最后一个单词
        {
          s[ct] = '\0';
          maxct = ct;
          strcpy(ms, s);
        }
      printf("%s\n", ms);
      return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月25日
  • 已采纳回答 12月17日
  • 创建了问题 12月16日

悬赏问题

  • ¥15 51单片机PN532刷卡原理图代码
  • ¥15 matlab如何不显示绘图而保存为能打开的fig图片?
  • ¥15 oracle数据库备份、
  • ¥15 关于Finetune模型,CUDA error: device-side assert triggered 报错
  • ¥15 能将阿里云上多个设备的信息能上传给小程序吗
  • ¥50 QT6.7 Camera预览窗口,camera分辨率设置
  • ¥15 车机是安卓4.4.3,车机没有gps,我想用外置蓝牙gps。所以在用安卓模拟位置服务时候,我下载的相关软件不显示在列表里
  • ¥15 matlab水位控制系统(详解)
  • ¥15 CST软件仿真,已知中心线方程构建图形
  • ¥15 supLink 用户定位