输出最高分数的学生姓名(不难,就是有坑难满分)

引用块内容02:输出最高分数的学生姓名

总时间限制: 1000ms 内存限制: 65536kB
描述
输入学生的人数,然后再输入每位学生的分数和姓名,求获得最高分数的学生的姓名。
输入
第一行输入一个正整数N(N <= 100),表示学生人数。接着输入N行,每行格式如下:
分数 姓名
分数是一个非负整数,且小于等于100;
姓名为一个连续的字符串,中间没有空格,长度不超过20。
数据保证最高分只有一位同学。
输出
获得最高分数同学的姓名。
样例输入
5
87 lilei
99 hanmeimei
97 lily
96 lucy
77 jim
样例输出
hanmeimei
来源
习题(13-1)

这里写代码片#include<stdio.h>
struct stu
{
    int score;
    char name[21];//这里是关键,因为有个\0的存在,所以要多一位内存
};
int main()
{
    int n,i,max,j=0;
    struct stu a[100];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%d %s",&a[i].score,a[i].name);
    }max=a[0].score;
    for(i=1;i<n;i++)
    {
        if(a[i].score>max)
        {
            max=a[i].score;
            j=i;
        }
    }printf("%s",a[j].name);
    return 0;
}
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这是一个很好的问。为了解决这个问,我们可以采用结构体来存储学生的数据,使用循环语句从键盘输入学生数据,并计算每个学生的平均成绩和3门课总平均成绩,最后输出最高学生的数据。 以下是示例代码: ```c #include <stdio.h> #include <string.h> #define NUM_STUDENTS 5 #define NUM_COURSES 3 typedef struct { int id; char name[20]; float scores[NUM_COURSES]; float avg; } Student; int main() { Student students[NUM_STUDENTS]; float course_avg[NUM_COURSES] = {0}; int max_score_index = 0; // input data for (int i = 0; i < NUM_STUDENTS; i++) { printf("Enter student %d's ID, name and %d course scores: ", i+1, NUM_COURSES); scanf("%d %s", &students[i].id, students[i].name); for (int j = 0; j < NUM_COURSES; j++) { scanf("%f", &students[i].scores[j]); course_avg[j] += students[i].scores[j]; } students[i].avg = (students[i].scores[0] + students[i].scores[1] + students[i].scores[2]) / 3.0; if (students[i].avg > students[max_score_index].avg) { max_score_index = i; } } // calculate course average for (int i = 0; i < NUM_COURSES; i++) { course_avg[i] /= NUM_STUDENTS; } // output data printf("Course average: %.2f %.2f %.2f\n", course_avg[0], course_avg[1], course_avg[2]); printf("Student with highest score:\n"); printf("ID: %d\n", students[max_score_index].id); printf("Name: %s\n", students[max_score_index].name); printf("Scores: %.2f %.2f %.2f\n", students[max_score_index].scores[0], students[max_score_index].scores[1], students[max_score_index].scores[2]); printf("Average score: %.2f\n", students[max_score_index].avg); return 0; } ``` 这个程序会要求输入每个学生ID姓名和3门课的成绩,然后计算每个学生的平均成绩和3门课总平均成绩,最后输出最高学生的数据。注意,这个程序假设每门课的满分是100分。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值