题目描述
小码君的班上有 𝑛n 位同学,每位同学有四个属性,即姓名,学号,语文成绩,数学成绩。
小码君有 𝑚m 个问题,问题有两种形式:
-
𝑛𝑎𝑚𝑒 𝑥name x,询问姓名为 𝑥 的学生的语文成绩和数学成绩。
-
𝑛𝑢𝑚𝑏𝑒𝑟 𝑦number y,询问学号为 𝑦的同学语文成绩和数学成绩的平均值。
输入格式
第一行一个整数 𝑛,𝑚(0<𝑛,𝑚<100)n,m(0<n,m<100),表示小码君的班上有 𝑛 位同学和 𝑚m个问题。
接下来 𝑛 行每行一个字符串和三个整数,表示姓名(长度小于 1010 ),学号(<100<100),语文成绩(<100<100),数学成绩(<100<100)。
接下来 𝑚 行,每行两个数据,具体含义参考题目。
注:数据保证每个同学的姓名不一样并且保证询问的问题合法,即询问的姓名和学号一定存在。
输出格式
对于每一个问题,按照题意输出。
输入输出样例
-
输入#1
3 3 江家飞 1 95 100 骨添勒 2 100 88 晨晓椿 3 88 99 name 江家飞 name 骨添勒 number 2
输出#1
95 100 100 88 94.00
思路:这是一道简单的结构体题。先定义用struct关键词定义一个名为“stu”的结构体,然后在其内部定义学生的姓名、学生的学号、学生的语文成绩还有学生的数学成绩,最后创造一个stu类型的a数组。输入结构体的变量后,再定义一个string类型的变量s,用于判断查询的需求,输出对应需求的语文、数学成绩或语文和数学成绩的平均分。注:要保留两位小数。
#include<bits/stdc++.h>
using namespace std;
int n,m;
struct stu{
string name;
int i,c,m;
}a[1000001];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].name>>a[i].id>>a[i].ch>>a[i].ma;
}
for(int i=1;i<=m;i++){
string s;
cin>>s;
if(s=="name")
{
string s2;
cin>>s2;
for(int i=1;i<=n;i++){
if(s2==a[i].name)
{
cout<<a[i].ch<<" "<<a[i].ma<<endl;
break;
}
}
}
else if(s=="number")
{
int x;
cin>>x;
for(int i=1;i<=n;i++){
if(x==a[i].id)
{
cout<<fixed<<setprecision(2)<<(a[i].ch+a[i].ma)/2.0<<endl;
break;
}
}
}
}
return 0;
}