educoder 字符串统计

题目描述:输入一段字符(由空格、字母和数字几种组成,保证开头不为空格),里面有若干个字符串,求这些字符串的长度和,并输出最长字符串内容,如果有多个输出最先出现的那个字符串。以stop作为最后输入的字符串。

本题考察的内容有多组输入,以及一些字符串函数的运用。本题的思路比较简单,就是讲每一个字符串的长度求出来,然后在比较每一个字符串的长度,并分类存储。因为一般的输入遇到空格便会停止输入,所以输入时不要用scanf,或者cin,可以用gets(),fgets(),或者getline,注意,c++中的getline不能直接给数组赋值,可以用string定义一个str,然后直接将str当做数组来用。接下来便是单词存放的问题了,我用的是二维数组,每一行存一个单词,然后列存相应的字母。在使用二维数组时,可以直接以一维数组形式读取单词。例如:

            m y
            n a m e
            i s
            A m y

这是在二维数组中存放时的形式,a[0]=“my”;a[1]=“name”;像这样便能实现单词的读取。
最后补充一点,记得数组使用后的及时清零,以及变量的清零。

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

char str[1000];
char word[1000][200];
char word2[1000][200];
int geshu[1000];
int number[1000];

int main()
{
    int num=0,len=0,nums=0,j=0;
    while(strcmp(str,"stop")){
        memset(str,'0',sizeof(str));
        gets(str);
        for(int i=0;str[i]!='\0';i++){
            if(str[i]!=' '){
                word[num][len]=str[i];
                len++;
                nums++;
            }
            else{
                num++;
                len=0;
            }
        }
        len=0;
        for(int i=0;i<=num;i++){
           number[i]=strlen(word[i]);
        }
        int max=number[0],inmax=0;
        for(int i=0;i<=num;i++){
            if(number[i]>max){
                max=number[i];
                inmax=i;
            }
        }
        geshu[j]=nums;
        strcpy(word2[j],word[inmax]);
        j++;
        nums=0;
        num=0;
        memset(word,0,sizeof(word));
        memset(number,0,sizeof(number));;
    }
    for(int i=0;i<j-1;i++){
        printf("%d %s\n",geshu[i],word2[i]);
    }
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值