注册 登录
编程论坛 C++教室

关于string 的问题

流照君 发布于 2019-03-03 11:20, 1766 次点击
求助!!!!
题目描述
找出出现次数最多的数字并输出, 如果有多个,那就按出现的先后顺序都输出
输入
EOF结束
每行给出一个数字
输出
如果出现最多的数字只有一个,那么就输出它就可以
如果出现最多的数字不止一个,那么就按出现的先后顺序输出(换行输出)
样例输入
1111111111111
1111111111111111111111111111
11111111111111
1111111111111111111111111111
1111111111111111111111111111
样例输出
1111111111111111111111111111
 
大家帮我看一下我的代码 谢谢啦
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
    string s,str[100];
    int number=1,a[100],flag=0,max1=0;
    memset(a,0,sizeof(a));
    scanf("%s",&str[1]);
    a[1]=1;
    while(scanf("%s",&s)!=EOF)
    {
        flag=0;
       for(int i=1;i<=number;i++)
       {
              if(s==str[i])
              {
                  ++a[i];
                  break;
           }
            if(s!=str[i])
            {
                ++flag;
            }
       }
       if(flag==number)
       {
           number++;
           str[number]=s;
       }
}
       for(int i=1;i<=number;i++)
       {
             if(a[i]>max1)
             max1=a[i];
       }
       for(int i=1;i<=number;i++)
       {
           if(max1==a[i])
           {
               cout<<str[i]<<endl;
               break;
        }
       }
    return 0;
}
为什么使用EOF字符无法结束呢??
反而会
只有本站会员才能查看附件,请 登录

谢谢各位大佬啦
5 回复
#2
流照君2019-03-03 14:07
在线等 挺急的
#3
rjsp2019-03-04 00:40
    string s;
    while(scanf("%s",&s)!=EOF)
搞笑来的吧
#4
流照君2019-03-04 16:04
回复 3楼 rjsp
刚刚才知道scanf不可以使用string做对象
那应该怎么做呢????
谢啦
#5
rjsp2019-03-04 16:20
scanf( "%s", 这里要求一个char*的变量,且其指向的可用存储空间大于实际输入的字符数 )

std::string 当然得用 std::cin
#include <string>
for( string s; cin>>s; )


#6
cstdio2019-03-28 18:08
程序代码:
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
    string s,str[100];
    int number=1,a[100],flag=0,max1=0;
    memset(a,0,sizeof(a));//stdlib.h
    scanf("%s",&str[1]);
    a[1]=1;
    while(cin>>s)
    {
        flag=0;
       for(int i=1;i<=number;i++)
       {
              if(s==str[i])
              {
                  ++a[i];
                  break;
           }
            if(s!=str[i])
            {
                ++flag;
            }
       }
       if(flag==number)
       {
           number++;
           str[number]=s;
       }
}
       for(int i=1;i<=number;i++)
       {
             if(a[i]>max1)
             max1=a[i];
       }
       for(int i=1;i<=number;i++)
       {
           if(max1==a[i])
           {
               cout<<str[i]<<endl;
               break;
        }
       }
    return 0;
}
1