鱼C论坛

 找回密码
 立即注册
查看: 2976|回复: 3

[萌新报道] 求求您帮帮我

[复制链接]
发表于 2020-12-24 21:27:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
9-14 找出总分最高的学生 (15分)
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式:
输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。

输出格式:
在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。

输入样例:
5
00001 huanglan 78 83 75
00002 wanghai 76 80 77
00003 shenqiang 87 83 76
10001 zhangfeng 92 88 78
21987 zhangmeng 80 82 75
输出样例:
zhangfeng 10001 258




//为什么我的代码是错的啊
#include <stdio.h>
struct Stu
{
        char id[5];
        char name[10];
        int a;
        int b;
        int c;
        int score;
}s[10000];
int main()
{
        int i,n,max;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
                scanf("%s %s %d %d %d",&s[i].id ,&s[i].name ,&s[i].a ,&s[i].b ,&s[i].c );
            s[i].score  = s[i].a + s[i].b + s[i].c ;
        }
        s[max].score  = s[0].score ;
        for(i=0;i<n;i++)
        {
                if(s[max].score < s[i].score)
                max = i;
        }
        printf("%s %s %d",s[max].name ,s[max].id ,s[max].score );
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-24 22:06:28 | 显示全部楼层
  1. #include <stdio.h>

  2. struct Stu
  3. {
  4.         char id[10]   ;  // 学号本身有 5 个字符,所以,此字符串数组成员的容量必须大于 5
  5.         char name[10] ;
  6.         int a         ;
  7.         int b         ;
  8.         int c         ;
  9. } s[10000]            ;

  10. int main()
  11. {
  12.         int i , k , n                                                                                 ;
  13.         scanf("%d" , & n)                                                                             ;
  14.         for(i = 0 ; i < n ; i ++) {
  15.                 scanf("%s%s%d%d%d" , s[i] . id , s[i] . name , & s[i] . a , & s[i] . b , & s[i] . c ) ;
  16.                 if(! i) {
  17.                         k = i                                                                         ;
  18.                 } else {
  19.                         if(s[i] . a + s[i] . b + s[i] . c > s[k] . a + s[k] . b + s[k] . c) k = i     ;
  20.                 }
  21.         }
  22.         printf("%s %s %d" , s[k] . name , s[k] . id , s[k] . a + s[k] . b + s[k] . c)                 ;
  23. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. 5
  4. 00001 huanglan 78 83 75
  5. 00002 wanghai 76 80 77
  6. 00003 shenqiang 87 83 76
  7. 10001 zhangfeng 92 88 78
  8. 21987 zhangmeng 80 82 75
  9. zhangfeng 10001 258
  10. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-24 22:18:14 | 显示全部楼层

请问老师我的除了id那出错了 ,下面的代码怎么错了呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-24 22:35:51 | 显示全部楼层
本帖最后由 jackz007 于 2020-12-24 22:37 编辑
llf123456 发表于 2020-12-24 22:18
请问老师我的除了id那出错了 ,下面的代码怎么错了呢


        这句代码不对
  1.                 scanf("%s %s %d %d %d",&s[i].id ,&s[i].name ,&s[i].a ,&s[i].b ,&s[i].c );
复制代码

        得改成这样
  1.                 scanf("%s %s %d %d %d",s[i].id ,s[i].name ,&s[i].a ,&s[i].b ,&s[i].c );
复制代码

        两个字符串参数不能带取址操作符

评分

参与人数 1荣誉 +5 收起 理由
llf123456 + 5

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 12:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表