正经题解
2026-03-30 18:27:31
发布于:四川
8阅读
0回复
0点赞
OK家人们,也是直接上题解了,这题还给我归类结构体排序也是逆天
话不多说,直接开始。
头文件我就不说了不会是GAY
接着定义结构体:
//参考代码:
struct cx{
string nm;//名字
string xh;//学号
double ch;//语文成绩
double mt;//数学成绩
}a[110];
//为了下面判断方便,都是string,输出方便,用double
连cmp都不用,真的
依旧输入:
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].nm>>a[i].xh>>a[i].ch>>a[i].mt;
}
判断开始了
提上说有两种判法,都要x和y所以我就直接在循环里输入了,也顺便再循环里判定了
循环前期:
for(int i=1;i<=m;i++){
string x,y;
cin>>x>>y;
第一个:如果·是name,输出语文,数学成绩。
也是非常非常简单
if(x=="name"){
for(int i=1;i<=n;i++){
if(y==a[i].nm){
cout<<a[i].ch<<" "<<a[i].mt<<endl;
}
}
}
接着如果是number,输出语数平均分
else if(x=="number"){
for(int i=1;i<=n;i++){
if(y==a[i].xh){
printf("%.2lf",(a[i].ch+a[i].mt)/2);
cout<<endl;
}
}
}
注意:要用printf(为了输出浮点数)
格式就不说了不会重学。
换行的话\n或endl都行
最后直接return 0;
OK,这题主要考察结构体搜索,搜时遍历就行(时间复杂度允许的情况下)。
现在颁布完整代码:
#include<bits/stdc++.h>
using namespace std;
struct cx{
string nm;
string xh;
double ch;
double mt;
}a[110];
int main(){
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].nm>>a[i].xh>>a[i].ch>>a[i].mt;
}
for(int i=1;i<=m;i++){
string x,y;
cin>>x>>y;
if(x=="name"){
for(int i=1;i<=n;i++){
if(y==a[i].nm){
cout<<a[i].ch<<" "<<a[i].mt<<endl;
}
}
}else if(x=="number"){
for(int i=1;i<=n;i++){
if(y==a[i].xh){
printf("%.2lf",(a[i].ch+a[i].mt)/2);
cout<<endl;
}
}
}
}
return 0;
}
莫要抄代码,抄代码对大家没用,好好看解题思路。
关注VOX,祝AC狗友们每题AC
这里空空如也







有帮助,赞一个