鱼C论坛

 找回密码
 立即注册
查看: 1376|回复: 7

c语言成绩查询问题

[复制链接]
发表于 2020-6-19 15:52:16 | 显示全部楼层 |阅读模式

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

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

x
毛小杰在丁老师的悉心指导下对学习产生了浓厚的兴趣。
他在每次期末考试之后,都会追问丁老师自己在年级的总名次是多少。
考试一多,丁老师也不耐烦了,于是他给了毛小杰所有人的成绩,让他自己去算出自己的年级排名。
可人太多了,毛小杰也无法算出来,于是他想让你帮帮他。
Input
第一行为一个整数N,代表班级的学生总数。
接下来N行,每行一个字符串,代表一个学生的姓名,第一行总是MaoXiaojie。
接下来一行一个整数M,代表一共有M次考试。
每次考试有N行,每行有以一个空格分隔的一个正整数S和一个字符串P,代表名字为P的学生在这次考试中得了S分。
Output
输出一个整数,代表毛小杰在年级的总排名,排名是所有考试总分排名,如果毛小杰和别人并列,毛小杰总是排在前面。

                          这是我的代码,自己实验了好多结果是对的,但是系统过不去,求助各位大神帮忙看看哪里错了
  1. #include <stdio.h>
  2. #include <string.h>

  3. typedef struct student
  4. {
  5.     char name[105];
  6.     int grade;
  7. } stu;

  8. typedef struct students
  9. {
  10.     char name1[105];
  11. } stud;

  12. typedef struct score
  13. {
  14.     char name2[105];
  15.     int score;
  16. } scr;
  17. int n,m,i,j,a,b=1,sum;
  18. stud arr1[10005];
  19. stu arr2[10005];
  20. scr arr3[10005];
  21. int main(void)
  22. {
  23.     scanf("%d", &n);
  24.     for(i=0;i<n;i++)
  25.     {
  26.         scanf("%s", arr1[i].name1);
  27.     }
  28.     scanf("%d", &m);
  29.     a=n*m;
  30.     for(i=0;i<a;i++)
  31.     {
  32.         scanf("%d  %s",&arr2[i].grade,arr2[i].name);
  33.     }
  34.     for(i=0;i<n;i++)
  35.     {
  36.         for(j=n;j<a;j++)
  37.         {
  38.             if(strcmp(arr2[i].name, arr2[j].name) == 0)
  39.             {
  40.                 sum = arr2[i].grade + arr2[j].grade;
  41.                 arr2[i].grade = sum;
  42.                 arr3[i].score = arr2[i].grade;
  43.                 strcpy(arr3[i].name2,arr2[i].name);
  44.             }
  45.         }
  46.     }                                                
  47.     for (i=0; i<n; i++) {
  48.         if(strcmp(arr3[i].name2, arr1[0].name1) == 0);
  49.         sum = arr3[i].score;
  50.         break;
  51.     }
  52.     for(i=0;i<n;i++)
  53.     {
  54.         if (arr3[i].score>sum)
  55.             b=b+1;
  56.     }
  57.    
  58.     printf("%d\n",b);

  59.     return 0;
  60. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 17:53:22 | 显示全部楼层
系统有提供测试数据吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 18:13:45 | 显示全部楼层
liuzhengyuan 发表于 2020-6-19 17:53
系统有提供测试数据吗

有的
输入
3
MaoXiaojie
MengXiaolin
LiXiaoshuo
2
49  MaoXiaojie
49  MengXiaolin
48  LiXiaoshuo
80  MengXiaolin
85  LiXiaoshuo
83  MaoXiaojie
输出   2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 18:14:52 | 显示全部楼层
liuzhengyuan 发表于 2020-6-19 17:53
系统有提供测试数据吗

不过我自己又找出了好多问题改了改,现在还有一个问题没有解决,就是如何找到毛小杰的成绩
  1. #include <stdio.h>
  2. #include <string.h>

  3. typedef struct student
  4. {
  5.     char name[105];
  6.     int grade;
  7. } stu;

  8. typedef struct students
  9. {
  10.     char name1[105];
  11. } stud;
  12. typedef struct score
  13. {
  14.     char name2[105];
  15.     int score;
  16. } scr;
  17. int n,m,i,j,a,b=1,sum1,sum2;
  18. /*stud arr1[10005];
  19. stu arr2[10005];
  20. scr arr3[10005];*/
  21. int main(void)
  22. {
  23.     scanf("%d", &n);
  24.     stud arr1[n];
  25.     for(i=0;i<n;i++)
  26.     {
  27.         scanf(" %s", arr1[i].name1);
  28.     }
  29.     scanf("%d", &m);
  30.     a=n*m;

  31.     stu arr2[a];
  32.     scr arr3[n];
  33.     for(i=0;i<a;i++)
  34.     {
  35.         scanf("%d %s",&arr2[i].grade,arr2[i].name);
  36.     }
  37.     if (m>1)
  38.     {
  39.         for(i=0;i<n;i++)
  40.         {
  41.             for(j=n;j<a;j++)
  42.             {
  43.                 if(strcmp(arr2[i].name, arr2[j].name) == 0)
  44.                 {
  45.                     sum1 = arr2[i].grade + arr2[j].grade;
  46.                     arr2[i].grade = sum1;
  47.                     arr3[i].score = arr2[i].grade;
  48.                     strcpy(arr3[i].name2,arr2[i].name);
  49.                 }
  50.             }
  51.         }
  52.     }
  53.     else
  54.     {
  55.         for(i=0;i<n;i++)
  56.         {
  57.             arr3[i].score = arr2[i].grade;
  58.             strcpy(arr3[i].name2,arr2[i].name);
  59.         }
  60.     }
  61.     for (i=0;i<n; i++) {
  62.         if(strcmp(arr1[0].name1,arr3[i].name2) == 0);
  63.         {
  64.             sum2 = arr3[i].score;
  65.             break;
  66.         }
  67.     }
  68.     for(i=0;i<n;i++)
  69.     {
  70.         if (arr3[i].score>sum2)
  71.             b=b+1;
  72.     }
  73.     for(i=0;i<n;i++)
  74.     {
  75.         printf("%d %s\n",arr3[i].score,arr3[i].name2);
  76.     }
  77.     for(i=0;i<n;i++)
  78.     {
  79.         printf("%s\n",arr1[i].name1);
  80.     }
  81.     printf("%d %d\n",sum1,sum2);
  82.     printf("%d\n",b);

  83.     return 0;
  84. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 18:15:54 | 显示全部楼层
liuzhengyuan 发表于 2020-6-19 17:53
系统有提供测试数据吗

在第64 到69行是我写的,可是不对,找到的不是毛小杰的成绩,不知道为啥。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 18:17:12 | 显示全部楼层
liuzhengyuan 发表于 2020-6-19 17:53
系统有提供测试数据吗

比如换成这个就不对了
3
MaoXiaojie
MengXiaolin
LiXiaoshuo
2
48 LiXiaoshuo
49 MengXiaolin
49 MaoXiaojie
80 MengXiaolin
85 LiXiaoshuo
83 MaoXiaojie
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 19:08:41 | 显示全部楼层
liuzhengyuan 发表于 2020-6-19 17:53
系统有提供测试数据吗

问题已经解决了,谢谢了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-19 19:09:21 | 显示全部楼层
  1. #include <stdio.h>
  2. #include <string.h>

  3. typedef struct student
  4. {
  5.     char name[105];
  6.     int grade;
  7. } stu;

  8. typedef struct students
  9. {
  10.     char name1[105];
  11. } stud;
  12. typedef struct score
  13. {
  14.     char name2[105];
  15.     int score;
  16. } scr;
  17. int n,m,i,j,a,b=1,sum1,sum2;
  18. stud arr1[10005];
  19. stu arr2[10005];
  20. scr arr3[10005];
  21. int main(void)
  22. {
  23.     scanf("%d", &n);

  24.     for(i=0;i<n;i++)
  25.     {
  26.         scanf(" %s", arr1[i].name1);
  27.     }
  28.     scanf("%d", &m);
  29.     a=n*m;

  30.     for(i=0;i<a;i++)
  31.     {
  32.         scanf("%d %s",&arr2[i].grade,arr2[i].name);
  33.     }
  34.     if (m>1)
  35.     {
  36.         for(i=0;i<n;i++)
  37.         {
  38.             for(j=n;j<a;j++)
  39.             {
  40.                 if(strcmp(arr2[i].name, arr2[j].name) == 0)
  41.                 {
  42.                     sum1 = arr2[i].grade + arr2[j].grade;
  43.                     arr2[i].grade = sum1;
  44.                     arr3[i].score = arr2[i].grade;
  45.                     strcpy(arr3[i].name2,arr2[i].name);
  46.                 }
  47.             }
  48.         }
  49.     }
  50.     else
  51.     {
  52.         for(i=0;i<n;i++)
  53.         {
  54.             arr3[i].score = arr2[i].grade;
  55.             strcpy(arr3[i].name2,arr2[i].name);
  56.         }
  57.     }
  58.     for (i=0;i<n; i++) {
  59.         if(strcmp(arr1[0].name1,arr3[i].name2) == 0)
  60.         {
  61.             sum2 = arr3[i].score;
  62.             break;
  63.         }
  64.     }
  65.     for(i=0;i<n;i++)
  66.     {
  67.         if (arr3[i].score>sum2)
  68.             b=b+1;
  69.     }

  70.     printf("%d\n",b);

  71.     return 0;
  72. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 14:47

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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