Think:
1知识点:哈希映射+字符串大小写转换
2反思:需要提高并熟悉STL中常用容器的基本操作
以下为Accepted代码——towlower()大写字母转换为小写字母
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, i, num;
double per;
char st[104];
map <string, int> m1;
scanf("%d", &n);
getchar();
for(i = 0; i < n; i++){
gets(st);
int len = strlen(st);
for(int j = 0; j < len; j++){
st[j] = towlower(st[j]);
}
m1[st]++;
}
map <string, int> ::iterator it;
for(it = m1.begin(); it != m1.end(); it++){
num = it->second;
per = ((double)num/(double)n)*100.0;
printf("%s %.2lf%%\n", it->first.c_str(), per);
}
return 0;
}
/***************************************************
User name:
Result: Accepted
Take time: 0ms
Take Memory: 232KB
Submit time: 2017-07-14 20:05:28
****************************************************/
以下为Accepted代码
#include <bits/stdc++.h>
using namespace std;
int main(){
int n, i, num;
double per;
char st[104];
map <string, int> m1;
scanf("%d", &n);
getchar();
for(i = 0; i < n; i++){
gets(st);
int len = strlen(st);
for(int j = 0; j < len; j++){
if(st[j] >= 'A' && st[j] <= 'Z'){
st[j] = st[j] - 'A' + 'a';
}
}
m1[st]++;
}
map <string, int> ::iterator it;
for(it = m1.begin(); it != m1.end(); it++){
num = it->second;
per = ((double)num/(double)n)*100.0;
printf("%s %.2lf%%\n", it->first.c_str(), per);
}
return 0;
}
/***************************************************
User name:
Result: Accepted
Take time: 0ms
Take Memory: 224KB
Submit time: 2017-07-14 20:07:14
****************************************************/