【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; }