求求帮忙看看
姓名 高数 线代张飞 78 75
李大刀 92 67
李墨白 84 88
王老虎 50 50
雷小米 99 98
编写程序按照总分从高到低进行排序后输出姓名和成绩
怎么不引用太多函数完成啊,新生上路,最简单基础的做法就好,谢谢大佬了谢谢! 你的数据输入形式是什么?手动输入? suchocolate 发表于 2022-10-22 21:25
你的数据输入形式是什么?手动输入?
他所有的作业都是靠求的,他要是能回答还用求别人? 这题不难,Python 的话可以自己先做做看。
借用你的题,我练习练习 C#include <stdio.h>
#include <stdlib.h>
typedef struct Person {
char* name;
unsigned algebra, lineage;
}Person;
int compare(const void * a, const void * b) {
Person x = *(Person*)a, y = *(Person*)b;
return (y.algebra + y.lineage) - (x.algebra + x.lineage);
}
int main(void)
{
Person arr = {
{"张飞", 78, 75},
{"李大刀", 92, 67},
{"李墨白", 84, 88},
{"王老虎", 50, 50},
{"雷小米", 99, 98}
};
qsort(arr, 5, sizeof(Person), compare);
for (int i = 0; i < 5; ++i) {
printf("%s %u %u\n", arr.name, arr.algebra, arr.lineage);
}
return 0;
}雷小米 99 98
李墨白 84 88
李大刀 92 67
张飞 78 75
王老虎 50 50 傻眼貓咪 发表于 2022-10-22 22:04
这题不难,Python 的话可以自己先做做看。
借用你的题,我练习练习 C
厉害呀,Python大蟒蛇都玩熟了,开始玩C草履虫了,哈哈哈{:10_250:} 我也参和一下:
import pandas as pd
k = pd.DataFrame({'姓名':["张飞","李大刀","李墨白",'王老虎','雷小米'],
'高数':,
'线代':})
print(k)
print('=========')
print(k.loc[((k['高数']+k['线代'])*-1).sort_values().index])
姓名高数线代
0 张飞7875
1李大刀9267
2李墨白8488
3王老虎5050
4雷小米9998
=========
姓名高数线代
4雷小米9998
2李墨白8488
1李大刀9267
0 张飞7875
3王老虎5050 那我就练习练习C++了
sh-5.1$ cat main.cpp
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <numeric>
using std::vector, std::pair;
using std::string;
using std::sort, std::accumulate;
using std::cout, std::endl;
using std::ostream;
ostream &operator<<(ostream &os, const vector<double> &vd) {
bool flag = false;
for(const auto &i: vd) {
if(flag) os << ' ';
flag = true;
os << i;
}
return os;
}
ostream &operator<<(ostream &os, const vector<pair<string, vector<double>>> &vp) {
bool flag = false;
for(const auto &i: vp) {
if(flag) os << endl;
flag = true;
os << i.first << ": " << i.second;
}
return os;
}
int main() {
vector<pair<string, vector<double>>> vp = {
{"张飞", {78, 75}},
{"李大刀", {92, 67}},
{"李墨白", {84, 88}},
{"王老虎", {50, 50}},
{"雷小米", {99, 98}}
};
sort(vp.begin(), vp.end(), [](const pair<string, vector<double>> &a, const pair<string, vector<double>> &b) -> bool {
return accumulate(a.second.begin(), a.second.end(), 0) > accumulate(b.second.begin(), b.second.end(), 0);
});
cout << vp << endl;
return 0;
}
sh-5.1$ g++ -g -Wall -o main main.cpp
sh-5.1$ ./main
雷小米: 99 98
李墨白: 84 88
李大刀: 92 67
张飞: 78 75
王老虎: 50 50
sh-5.1$
页:
[1]