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
    评论
字符串处理在编程中是非常常见的操作,包括字符串拼接、切割、替换、查找等等。在 Educoder 上,可以使用 Python、Java、C++等编程语言进行字符串处理。以下是一些常见的字符串处理操作的实现示例: Python: 1. 字符串拼接: ```python str1 = "hello" str2 = "world" str3 = str1 + str2 print(str3) ``` 2. 字符串切割: ```python str = "hello,world" arr = str.split(",") print(arr) ``` 3. 字符串替换: ```python str = "hello,world" new_str = str.replace(",", " ") print(new_str) ``` 4. 字符串查找: ```python str = "hello,world" index = str.find("world") print(index) ``` Java: 1. 字符串拼接: ```java String str1 = "hello"; String str2 = "world"; String str3 = str1 + str2; System.out.println(str3); ``` 2. 字符串切割: ```java String str = "hello,world"; String[] arr = str.split(","); System.out.println(Arrays.toString(arr)); ``` 3. 字符串替换: ```java String str = "hello,world"; String newStr = str.replace(",", " "); System.out.println(newStr); ``` 4. 字符串查找: ```java String str = "hello,world"; int index = str.indexOf("world"); System.out.println(index); ``` C++: 1. 字符串拼接: ```cpp string str1 = "hello"; string str2 = "world"; string str3 = str1 + str2; cout << str3 << endl; ``` 2. 字符串切割: ```cpp string str = "hello,world"; vector<string> arr; stringstream ss(str); string token; while (getline(ss, token, ',')) { arr.push_back(token); } for (string s : arr) { cout << s << " "; } cout << endl; ``` 3. 字符串替换: ```cpp string str = "hello,world"; replace(str.begin(), str.end(), ',', ' '); cout << str << endl; ``` 4. 字符串查找: ```cpp string str = "hello,world"; size_t index = str.find("world"); cout << index << endl; ```

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值