3 solutions
- 1
Information
- ID
- 148
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 8
- Tags
- # Submissions
- 154
- Accepted
- 18
- Uploaded By
这个题还行,仔细一点就可以
`
#include<bits/stdc++.h>
using namespace std;
struct s{
char na[100];
int a;
double c[15];
}stu[105];
int main(){
//std::ios::sync_with_stdio(false);
int x,y,z;
cin>>x>>y>>z;
for(int i=0;i<x;i++){
cin>>stu[i].na>>stu[i].a;
for(int j=0;j<y;j++){
double sum=0,aa;
for(int k=0;k<z;k++){
cin>>aa;
sum+=aa;
}
stu[i].c[j]=sum*1.0/z;
}
}
int t;
while(cin>>t&&t){
int flag=1;
for(int i=0;i<x;i++){
if(t==stu[i].a) {
// cout<<stu[i].na<<" ";
printf("%s ",stu[i].na);
for(int j=0;j<y;j++) {
printf("%.2lf",stu[i].c[j]);
if(j<y-1) printf(" ");
}
cout<<endl;
flag=0;
break;
}
}
if(flag==1) cout<<"No such Student!"<<endl;
}
return 0;
}
`
这个题的题意已经很清晰的给出学生信息的读取,本来想出一道二维数组嵌套结构体的,但是出完才发现可以用一维AC。
这里直接讲最初的思路。我们创建一个学生的结构体,包含题干上给出的所有信息(其中的学科成绩信息其实可以直接用总分或者平均分来记录,所以二维转一维)。
我们创建一个学生的数组,依次存放学信息。之后,用一个死循环来查询学生信息。
#include <stdio.h>
const int MAX = 100;
const int SUBJECT = 100;
struct Stu {
int id;
char name[10]; // 名字
int score[SUBJECT][MAX]; // 学科数/学期数
double ave[SUBJECT];
};
int main() {
int stuNum, subject, yearMax;
scanf("%d%d%d", &stuNum, &subject, &yearMax);
Stu stu[stuNum];
// 输入学生信息
for (int i = 0; i < stuNum; i++) {
scanf(" %s%d", stu[i].name, &stu[i].id);
for (int j = 0; j < subject; j++) {
double sum = 0;
for (int k = 0; k < yearMax; k++) {
scanf("%d", &stu[i].score[j][k]);
sum += stu[i].score[j][k];
}
stu[i].ave[j] = sum / yearMax;
}
}
// 查询
while (1) {
int checkId;
scanf("%d", &checkId);
if (checkId == 0)
break;
bool flag = false;
for (int i = 0; i < stuNum; i++) {
if (stu[i].id == checkId) {
flag = true;
printf("%s ", stu[i].name);
for (int j = 0; j < subject; j++)
printf("%.2lf%c", stu[i].ave[j],
j < subject - 1 ? ' ' : '\n');
break;
}
}
if (!flag) {
printf("No such Student!\n");
}
}
return 0;
}
END 明明很简单,为什么不先做我的,eeeee
这个题的题意已经很清晰的给出学生信息的读取,本来想出一道二维数组嵌套结构体的,但是出完才发现可以用一维AC。
这里直接讲最初的思路。我们创建一个学生的结构体,包含题干上给出的所有信息(其中的学科成绩信息其实可以直接用总分或者平均分来记录,所以二维转一维)。
我们创建一个学生的数组,依次存放学信息。之后,用一个死循环来查询学生信息。
#include <stdio.h>
const int MAX = 100;
const int SUBJECT = 100;
struct Stu {
int id;
char name[10]; // 名字
int score[SUBJECT][MAX]; // 学科数/学期数
double ave[SUBJECT];
};
int main() {
int stuNum, subject, yearMax;
scanf("%d%d%d", &stuNum, &subject, &yearMax);
Stu stu[stuNum];
// 输入学生信息
for (int i = 0; i < stuNum; i++) {
scanf(" %s%d", stu[i].name, &stu[i].id);
for (int j = 0; j < subject; j++) {
double sum = 0;
for (int k = 0; k < yearMax; k++) {
scanf("%d", &stu[i].score[j][k]);
sum += stu[i].score[j][k];
}
stu[i].ave[j] = sum / yearMax;
}
}
// 查询
while (1) {
int checkId;
scanf("%d", &checkId);
if (checkId == 0)
break;
bool flag = false;
for (int i = 0; i < stuNum; i++) {
if (stu[i].id == checkId) {
flag = true;
printf("%s ", stu[i].name);
for (int j = 0; j < subject; j++)
printf("%.2lf%c", stu[i].ave[j],
j < subject - 1 ? ' ' : '\n');
break;
}
}
if (!flag) {
printf("No such Student!\n");
}
}
return 0;
}
END 明明很简单,为什么不先做我的,eeeee
By signing up a 追梦算法网 universal account, you can submit code and join discussions in all online judging services provided by us.