n
代表测资数n
,两次 getchar()
分别滤掉换行与空白行,再开始用 while
回圈重复输入
int n;
scanf("%d", &n);
getchar();
getchar();
while(n--){
...
}
for
回圈读入树名直到空白行 (输入後仍为 0);同时计算共有多少颗树,存到 num
里面
int num = 0;
for(i = 0; i < 1000000; i++){
memset(name[i], 0, 31);
}
for(i = 0; ;){
gets(name[i]);
if(name[i][0] == 0){
break;
}
else{
i++;
num++;
}
}
qsort()
来加速
int compare(const void * a, const void * b){
int flag = strcmp(a, b);
if(flag > 0){
return 1;
}
else if(flag < 0){
return -1;
}
else{
return 0;
}
}
int main(){
...
qsort (name, num, 31, compare);
...
}
flag
的状态来决定是否输出与计算次数;要小心输出型态是四位数与测资间的空白行
for(i = 0; i < num;){
if(!flag){
printf("%s ", name[i]);
flag = true;
count++;
}
else{
if(i + 1 != num && strcmp(name[i], name[i + 1]) == 0){
count++;
}
else{
printf("%.4lf\n", ((double)count / (double)num) * 100);
flag = false;
count = 0;
}
i++;
}
}
if(n){
printf("\n");
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<stdbool.h>
char name[1000000][31];
int compare(const void * a, const void * b){
int flag = strcmp(a, b);
if(flag > 0){
return 1;
}
else if(flag < 0){
return -1;
}
else{
return 0;
}
}
int main(){
int n;
int i, j;
scanf("%d", &n);
getchar();
getchar();
while(n--){
char temp[31] = {0};
int num = 0;
bool flag = false;
int count = 0;
for(i = 0; i < 1000000; i++){
memset(name[i], 0, 31);
}
for(i = 0; ;){
gets(name[i]);
if(name[i][0] == 0){
break;
}
else{
i++;
num++;
}
}
qsort (name, num, 31, compare);
for(i = 0; i < num;){
if(!flag){
printf("%s ", name[i]);
flag = true;
count++;
}
else{
if(i + 1 != num && strcmp(name[i], name[i + 1]) == 0){
count++;
}
else{
printf("%.4lf\n", ((double)count / (double)num) * 100);
flag = false;
count = 0;
}
i++;
}
}
if(n){
printf("\n");
}
}
return 0;
}
map
又登场了,要注意输出格式即可#include <bits/stdc++.h>
using namespace std;
int main(){
int n;
bool flag = false;
string name;
cin >> n >> ws;
// 这几种方法都行,滤掉多余换行
// cin.get();
// cin.ignore();
// getline(cin, name);
while(n--){
if(flag){
cout << "\n";
}
flag = true;
double sum = 0;
map<string, int> mp;
while(getline(cin, name) && name != ""){
mp[name]++;
sum++;
}
for (auto i: mp){
cout << i.first << " " << fixed << setprecision(4) << (i.second / sum) * 100 << "\n";
}
}
return 0;
}
本篇介绍版面使用:hover会遇到的雷点,以及提供解决方式参考 还记的,我们在第6篇有提到状态选择...
上一篇介绍的日志纪录主要用来找错误与优化改善问题方面,而今天的日志内容会跟MYSQL数据恢复&am...
Hi~今天要介绍加密方式,如果有兴趣的话,就继续看下去吧! 在这个方面其实加密做得十分缜密!很多学...
因为工作的关系,在专案上接触到Material UI的Framework,也让我理解到为什麽这套UI...
Redis.config REPLICATION replicaof 透过非同步方式进行Master...