论X01集训难题#暑期快乐小事#
2024-08-04 15:35:47
发布于:四川
题目链接
T19724.学生信息查询
“入门”
通过率:46.67%
时间限制:1.00s
内存限制:128MB
题目描述
现给出n个学生的信息,包括学生姓名,学号,语文成绩,数学成绩。
之后会有m次查询,查询有两种问题
第一种:name x ,查询名字为x的学生的语文和数学成绩
第二种:number y,查询学号为y的学生的平均分,保留小数点后两位
输入格式
第一行n,m
接下来n行,每行依次是姓名,学号,语文成绩,数学成绩
再接下来m行查询条件。
输出格式
根据查询条件输出相应内容
输入输出样例
输入#1
复制
3 3
江家飞 1 95 100
骨添勒 2 100 88
晨晓椿 3 88 99
name 江家飞
name 骨添勒
number 2
输出#1
复制
95 100
100 88
94.00
说明/提示
0<n,m<100
姓名为长度小于10的字符串,
学号、语文成绩、数学成绩为小于100的整数
查询条件保证“合法”
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
struct Student {
string name;
int id;
int chinese;
int math;
};
Student student[110];
int a,b;
void name1(string &a1,Student student[],int n);
void number1(int b1,Student student[],int n);
int main() {
cin>>a>>b;
for(int i=0;i<a;i++){
cin>>student[i].name>>student[i].id>>student[i].chinese>>student[i].math;
}
for(int i=0;i<b;i++){
string t;
cin>>t;
if(t=="name"){
string name;
cin>>name;
name1(name,student,a);
}
else if(t=="number"){
int number;
cin>>number;
number1(number,student,a);
}
}
return 0;
}
void name1(string &a1,Student student[],int n){
for(int i=0;i<n;i++){
if(student[i].name==a1){
cout<<student[i].chinese<<" "<<student[i].math<<endl;
return;
}
}
}
void number1(int b1,Student student[],int n){
for(int i=0;i<n;i++){
if(student[i].id==b1){
double sum=(student[i].chinese+student[i].math)*1.0/2;
printf("%.2lf\n",sum);
return;
}
}
}
这是答案,真是醉了,这道题无语死了,希望下次别见到。
各位码友们求给更简单的代码
全部评论 4
等我把它压到20行以内(
2024-08-07 来自 湖南
1在线吗?
2024-08-07 来自 四川
0在!
2024-08-08 来自 广东
0
极限!!!
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; struct node{ string name; int id, c, m; bool operator < (const node b) const {return name < b.name;} }a[1005], bucket[1005]; int n, m, x; string s, s2; int find(string name){int left = 1, right = n; while(left <= right){int mid = left + right >> 1; if(a[mid].name == name) return mid; if(a[mid].name < name) left = mid + 1; else right = mid - 1;}} int main(){ cin >> n >> m; for(int i = 1; i <= n; i++){cin >> a[i].name >> a[i].id >> a[i].c >> a[i].m, bucket[a[i].id] = a[i];} sort(a + 1, a + n + 1); while(m--){ cin >> s; if(s == "name"){cin >> s2, cout << a[find(s2)].c << ' ' << a[find(s2)].m << endl;} else{cin >> x, printf("%.2f\n", 1.0 * (bucket[x].c + bucket[x].m) / 2);} } }
2024-08-07 来自 湖南
0叫我压行哥
2024-08-07 来自 湖南
1
#include <bits/stdc++.h> using namespace std; const int N = 100 + 10; struct Student{ string name; int id; int chinese; int maths; }; int main(){ int n, m; Student a[N]; string user; cin >> n >> m; for (int i = 0;i < n;i++) { cin >> a[i].name >> a[i].id >> a[i].chinese >> a[i].maths; } for (int i = 0;i < m;i++){ cin >> user; if (user == "name") { string user_name; cin >> user_name; for(int i = 0;i < n;i++){ if(a[i].name == user_name){ printf("%d %d\n", a[i].chinese, a[i].maths); break; } } } else { int user_id; cin >> user_id; for(int i = 0;i < n;i++){ if(a[i].id == user_id){ printf("%.2lf\n", (a[i].chinese + a[i].maths) / 2.0); break; } } } } return 0; }
2024-08-07 来自 四川
046行
2024-08-07 来自 四川
06
2024-08-08 来自 广东
09
2024-08-09 来自 四川
0
有帮助,赞一个