1.数字升序排序
#include<iostream>
#include<cstring>
using namespace std;
int main() {
int n, s;
cin >> n;
struct num {
int a;
int rank;
};
num b[n];
for (int i = 0; i < n; i++) {
cin >> b[i].a;
}
for (int j = 0; j < n; j++) {
s = 0;
for (int i = 0; i < n; i++) {
if (b[j].a >= b[i].a) {
s++;
}
}
b[j].rank = s;
}
for (int i = 0; i < n; i++) {
cout << b[i].rank<<' ';
}
}
另一种做法:使用sort函数
#include<iostream>
#include<algorithm>
using namespace std;
struct node {
int data;
int rank;
int index;
};
node a[10001];
int n, i;
bool compdata(node x, node y) {
return x.data < y.data;
}
bool compindex(node x, node y) {
return x.index < y.index;
}
int main() {
cin >> n;
for (i = 1; i <= n; i++) {
cin >> a[i].data;
a[i].index = i;
}
sort(a + 1, a + 1 + n, compdata);
for (i = 1; i <= n; i++) {
a[i].rank = i;
}
sort(a + 1, a + 1 + n, compindex);
for (i = 1; i <= n; i++) {
cout << a[i].rank << ' ';
}
}
2.数字降序排序
使用sort函数
#include<iostream>
#include<algorithm>
using namespace std;
struct node {
int data;
int rank;
int index;
};
node a[10001];
int n, i;
bool compdata(node x, node y) {
return x.data > y.data;
}
bool compindex(node x, node y) {
return x.index > y.index;
}
int main() {
cin >> n;
for (i = 1; i <= n; i++) {
cin >> a[i].data;
a[i].index = i;
}
sort(a + 1, a + 1 + n, compdata);
for (i = 1; i <= n; i++) {
a[i].rank = i;
}
sort(a + 1, a + 1 + n, compindex);
for (i = 1; i <= n; i++) {
cout << a[i].rank << ' ';
}
}
3.统计得票数
#include<iostream>
#include<cstring>
using namespace std;
struct Student{
char name[20];
int voteCount;
}moniter[3]={0};
int main(){
char voteName[20]={0};
int j=0,r=0;
for(int i=1;i<=7;i++){
cin>>voteName;
for(j=0;j<3;j++){
if(!strcmp(voteName,moniter[j].name)){
moniter[j].voteCount++;
break;
}
}
if(j==3){
strcpy(moniter[r].name,voteName);
moniter[r].voteCount++;
r++;
}
}
for(int i=0;i<3;i++){
cout<<moniter[i].name<<" "<<moniter[i].voteCount<<endl;
}
return 0;
}