求救
  • 板块学术版
  • 楼主zhangxuecheng
  • 当前回复1
  • 已保存回复2
  • 发布时间2024/7/10 13:23
  • 上次更新2024/7/10 14:49:13
查看原帖
求救
1012807
zhangxuecheng楼主2024/7/10 13:23

题目描述

一个以‘.’结尾的简单英文句子,单词之间用空格分隔,没有缩写形式和其它特殊形式。

输入格式

一个以‘.’结尾的简单英文句子(长度不超过500),单词之间用空格分隔,没有缩写形式和其它特殊形式。

输出格式

该句子中最长的单词。如果多于一个,则输出第一个。

代码:

#include<iostream>
using namespace std;
int main(){
    string a;
    getline(cin,a);//有空格要用getline
    int wordlength[500]={};//每个单词长度
    int temp=0;//每个单词长度(临时)
    int k=0;//wordlength长度(数组内数字量)
    for(int i=0;i<a.size();i++){
        if(a[i]!=' '){
            temp++;
        }
        else{//该单词结束
            wordlength[k]=temp;//该单词长度
            temp=0;//长度清零
            k++;//数字量(下标)+1;
        }
    }
    int max=wordlength[0];//打擂台,假设第一个单词最长
    int maxpos=1;//最长单词是第几个
    for(int i=1;i<k;i++){//穷举
        if(a[i]>max){
            max=a[i];
            maxpos=i+1;//因为下标从0开始,而第一个单词长度存在wordlength[0]中,所以要+1
        }
    }
    int c=0;//用于寻找最长单词
    for(int i=0;i<a.size();i++){
        if(a[i]==' '){
            c++;
        }
        if(c=maxpos){
            cout<<a[i];
        }
    }

为何WA,神犇救我

2024/7/10 13:23
加载中...