【gets getline的用法 char[]转化为str】poj 2418

http://poj.org/problem?id=2418

【注意】

1. 输入有空格,用

char str[maxn];
while(gets(str)){
    str[0]!='\0';
}

string str;
while(getline(cin,str)&&!(str=='')){

}

2. 

char str[maxn];
string s;
s=str;

而不是

char str[maxn];
string s;
int len=strlen(str);
for(int i=0;i<len;i++) s[i]=str[i];

【Accepted】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<map>

using namespace std;
const int maxn=32;
char str[maxn];
map<string, int> mp;
map<string, int>::iterator it;
int main(){
    int cnt=0;
    while(gets(str)){
        if(str[0]=='\0') break;
        string s;
        /* 
        //错误写法 
        int len=strlen(str);
        for(int i=0;i<len;i++){
            s[i]=str[i];
        }
        */
        
        //正确写法 
        s=str;
        if(mp.find(s)!=mp.end()){
            mp[s]+=1;
        }else{
            mp[s]=1;
        }
        cnt++;
    }
    for(it=mp.begin();it!=mp.end();it++){
        cout<<it->first<<" ";
        printf("%.4f\n",100*it->second*1.0/cnt);
    }
    
    return 0;
}

 

posted @ 2018-06-13 20:48  shulin15  阅读(190)  评论(0编辑  收藏  举报