7-1 学生成绩录入及查询
分数 26
全屏浏览题目
切换布局
作者?zym
单位?广东外语外贸大学
学生成绩表中,一名学生的信息包含如下信息:
学号(11位)、姓名、数学成绩、英语成绩、程序设计成绩、物理成绩。本题要求编写程序,录入
N
条学生的信息,并且按查询要求显示学生成绩等信息。输入格式:
输入在第一行给出正整数N(N<=10);随后N行,每行按格式:
学号 姓名 数学成绩 英语成绩 程序设计成绩 物理成绩
给出一名学生的信息。
其中学号
是11位数字;姓名是不超过10个字符、不包含空格的非空字符串;成绩是<=100的非负整数;在学生信息输入完成后,给出要查询的姓名。
输出格式:
对查询的姓名的每一名学生,在一行中按照如下格式输出:
学号 姓名 数学成绩 英语成绩 程序设计成绩 物理成绩
如果有相同姓名的同学,输出全部同学的信息,每名同学一行;
如果要查询的学生不存在,则输出:Not Found!
输入样例:
在这里给出一组输入。例如:
4 20201003012 LiWen 68 90 78 86 20201003012 HeHua 91 88 80 82 20201002121 WangFang 78 78 82 90 20201002112 ZhengYi 56 83 77 80 ZhengYi
输出样例:
在这里给出相应的输出。例如:
20201002112 ZhengYi 56 83 77 80
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
?
#include<stdio.h>
#include<string.h>
struct Student{
char id[12];
char name[11];
int math;
int english;
int cpp;
int science;
};
int main(){
int N;
scanf("%d",&N);
struct Student stu[N];
for(int i = 0;i<N;i++){
scanf("%s %s %d %d %d %d",
stu[i].id,stu[i].name,
&stu[i].math,&stu[i].english,
&stu[i].cpp,&stu[i].science);
}
char find[11];
scanf("%s",find);
int found = 0;
for(int i = 0;i<N;i++){
if(strcmp(find,stu[i].name)==0){
printf("%s %s %d %d %d %d\n",
stu[i].id,
stu[i].name,
stu[i].math,
stu[i].english,
stu[i].cpp,
stu[i].science);
found++;
}
}
if(found==0){
printf("Not Found!\n");
}
return 0;
}
1. scanf中,有%s的不需要&
2.strcmp需要写上==0
3.有四门学科,要有四个%d
4.是\n!
5.id是要为【12】?
7-4 学生成绩排序
分数 27
全屏浏览题目
切换布局
作者?张泳
单位?浙大城市学院
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。如果平均分相同,按输入的先后顺序排列。
输入格式:
输入一个正整数n(n<50),下面n行输入n个学生的信息,包括:学号、姓名、三门课程成绩(整数)。
输出格式:
输出从高到低排序后的学生信息,包括:学号、姓名、平均分(保留两位小数)。
输入样例:
3 101 Zhang 78 87 85 102 Wang 91 88 90 103 Li 75 90 84
输出样例:
102,Wang,89.67 101,Zhang,83.33 103,Li,83.00
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
?
#include<stdio.h>
#include<string.h>
struct Student{
int id;
char name[12];
int A;
int B;
int C;
float avg;
};
int main(){
int N;
scanf("%d",&N);
struct Student stu[N];
for(int i =0;i<N;i++){
scanf("%d %s %d %d %d",&stu[i].id,stu[i].name,&stu[i].A,&stu[i].B,&stu[i].C);
stu[i].avg = (stu[i].A+stu[i].B+stu[i].C)/3.00;
}
struct Student temp;
for(int i = 0;i<N-1;i++){
for(int j = 0;j<N-i-1;j++){
if(stu[j].avg<stu[j+1].avg){
temp = stu[j+1];
stu[j+1]=stu[j];
stu[j]=temp;
}
}
}
for(int i =0;i<N;i++){
printf("%d,%s,%.2f\n",stu[i].id,stu[i].name,stu[i].avg);
}
return 0;
}
1.题目没有说明是char 默认id为int
2.冒泡排序中,外层是N-1,内层是N-i-1(有待考究)
3.要看清楚要求的printf是以空格形式输出,还是逗号形式输出。