写一个函数,输入一行字符,将此字符串中最长的单词输出。

思路:
一个一维字符数组拆成一个二维数组,二维数组看成多个一维数组。再比较二维数组中的每个一维数组的长度,初始化maxlen,把二维数组的str[0]的长度设为最大长度长度。再依次比较,找出长度最大的一维数组。
代码:

#include <stdio.h>
#include <string.h>
#define N 50
int main() {
    void result(char str1[]);
    char str1[N];
    printf("请输入字符串:\n");
    //scanf("%s",str1);
   // scanf会以键盘输入空格为结束
    gets(str1);
   // fgets(str1,N,stdin);
    result(str1);
    return 0;
}
void result(char str1[]) {
    int i,j,m,h,maxlen,max=0,len=strlen(str1);
    char str2[N][N];
    printf("字符串长度len=%d\n",len);
    printf("------------\n");
    for(i=0,j=0,h=0;i<=len;i++) {
        if(str1[i]!=' ') {
            str2[j][h]=str1[i];
            h++;
        }
        else {
            //把连续的所有空格都换成'\0',存在同一个str2[j]中,避免连续空格而新占一个str2[j]
            if(str1[i+1]==' ') {
                str2[j][h]='\0';
                h++;
            }
            else {
                str2[j][h]='\0';
                j=j+1;
                h=0;
            }
        }
    }
    maxlen=strlen(str2[0]);
    for(m=0;m<=j;m++) {
        int n=strlen(str2[m]);
        //  printf("str2[%d]=%d\n",m,n);
        if(n>maxlen) {
            maxlen=strlen(str2[m]);
            max=m;
        }
        //printf("%s\n",str2[m]);
        printf("strlen(str2[%d])=%d\n",m,strlen(str2[m]));
    }
    printf("------------\n");
    printf("运行结果为:\n");
    printf("%s",str2[max]);
}

运行结果:在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值