鱼C论坛

 找回密码
 立即注册
查看: 2626|回复: 6

[已解决]还是一个关于考试分数的问题

[复制链接]
发表于 2020-4-16 21:14:04 | 显示全部楼层 |阅读模式

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

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

x
这个的第二问    第二张是代码   改来改去改蒙b了求大佬写下代码   写第二问中的一个就行
最佳答案
2020-4-16 22:06:09
二维数组是 1 个数组。
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 // 定义5行4列的二维数据同时初始化。
  6.                 int[][] scores = {{80, 75, 78, 93},{67, 87, 98, 65},{86, 72, 60, 76},{76, 80, 76, 63},{82, 70, 90, 67}};
  7.                
  8.                 int[] kmTop = new int[4]; // 保存科目最高分
  9.                 int[] kmTopLine = new int[4]; // 保存科目最高分所在行号
  10.                
  11.                 int sum, sumTop, sumTopLine;
  12.                
  13.                 sumTop = 0; // 保存最高总成绩
  14.                 sumTopLine = 0; // 保存最高总成绩所在行
  15.                 for(int x=0; x<scores.length; x++) // 遍历行
  16.                 {
  17.                         sum = 0;
  18.                         for(int y=0; y<scores[x].length; y++) // 遍历列
  19.                         {
  20.                                 // 用2个2维数组分别保存每科最高分及所在行号
  21.                                 if (kmTop[y] < scores[x][y])
  22.                                 {
  23.                                         kmTop[y] = scores[x][y];
  24.                                         kmTopLine[y] = x+1;
  25.                                 }
  26.                                
  27.                                 // 计算学生总成绩
  28.                                 sum += scores[x][y];                               
  29.                                
  30.                                 // 最高总成绩及所在行号
  31.                                 if(sumTop < sum)
  32.                                 {
  33.                                         sumTop = sum;
  34.                                         sumTopLine = x+1;
  35.                                 }
  36.                         }
  37.                         // 打印学生总成绩
  38.                         System.out.println("第"+(x+1)+"名学生的总成绩是:"+sum);
  39.                 }
  40.                 System.out.println();
  41.                
  42.                 // 打印每科最高分及所在行号
  43.                 for(int x=0; x<kmTop.length; x++)
  44.                 {
  45.                         System.out.println("科目"+(x+1)+"最高分是:"+kmTop[x]+" 所在行号是:"+kmTopLine[x]);
  46.                 }
  47.                 System.out.println();
  48.                
  49.                 // 打印最高总成绩及所在行号
  50.                 System.out.println("最高总成绩是:"+sumTop+" 所在行号是:"+sumTopLine);

  51.         }
  52. }
复制代码
批注 2020-04-16 180136.png
批注 2020-04-16 211105.png

评分

参与人数 1鱼币 +1 收起 理由
wuqramy + 1 当我什么也没说

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-16 21:52:19 | 显示全部楼层

回帖奖励 +1 鱼币

  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.     int scores[5][4]={{80,75,78,93},{67,87,98,65},{86,72,60,76},{76,80,76,63},{82,70,90,67}};
  5.     int sum[5]={0},sco_h[4]={0},h[4]={0},i,j,sum_h=0,hs;
  6.     for (i=0;i<5;i++){
  7.         for (j=0;j<4;j++){
  8.             sum[i]+=scores[i][j];
  9.             if (sco_h[j]<scores[i][j]){
  10.                 sco_h[j]=scores[i][j];
  11.                 h[j]=i+1;
  12.             }
  13.         }
  14.         if (sum[i]>sum_h){
  15.             sum_h=sum[i];
  16.             hs=i+1;
  17.         }
  18.         printf("第%d名同学的总成绩是:%d\n",i+1,sum[i]);
  19.     }
  20.     for(j=0;j<4;j++){
  21.         printf("科目%d的最高分是%d,在第%d行\n",j+1,sco_h[j],h[j]);
  22.     }
  23.     printf("第%d名同学的总成绩最高,总成绩是:%d\n",hs,sum_h);
  24.     return 0;
  25. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-16 22:06:09 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +1 鱼币

二维数组是 1 个数组。
  1. class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 // 定义5行4列的二维数据同时初始化。
  6.                 int[][] scores = {{80, 75, 78, 93},{67, 87, 98, 65},{86, 72, 60, 76},{76, 80, 76, 63},{82, 70, 90, 67}};
  7.                
  8.                 int[] kmTop = new int[4]; // 保存科目最高分
  9.                 int[] kmTopLine = new int[4]; // 保存科目最高分所在行号
  10.                
  11.                 int sum, sumTop, sumTopLine;
  12.                
  13.                 sumTop = 0; // 保存最高总成绩
  14.                 sumTopLine = 0; // 保存最高总成绩所在行
  15.                 for(int x=0; x<scores.length; x++) // 遍历行
  16.                 {
  17.                         sum = 0;
  18.                         for(int y=0; y<scores[x].length; y++) // 遍历列
  19.                         {
  20.                                 // 用2个2维数组分别保存每科最高分及所在行号
  21.                                 if (kmTop[y] < scores[x][y])
  22.                                 {
  23.                                         kmTop[y] = scores[x][y];
  24.                                         kmTopLine[y] = x+1;
  25.                                 }
  26.                                
  27.                                 // 计算学生总成绩
  28.                                 sum += scores[x][y];                               
  29.                                
  30.                                 // 最高总成绩及所在行号
  31.                                 if(sumTop < sum)
  32.                                 {
  33.                                         sumTop = sum;
  34.                                         sumTopLine = x+1;
  35.                                 }
  36.                         }
  37.                         // 打印学生总成绩
  38.                         System.out.println("第"+(x+1)+"名学生的总成绩是:"+sum);
  39.                 }
  40.                 System.out.println();
  41.                
  42.                 // 打印每科最高分及所在行号
  43.                 for(int x=0; x<kmTop.length; x++)
  44.                 {
  45.                         System.out.println("科目"+(x+1)+"最高分是:"+kmTop[x]+" 所在行号是:"+kmTopLine[x]);
  46.                 }
  47.                 System.out.println();
  48.                
  49.                 // 打印最高总成绩及所在行号
  50.                 System.out.println("最高总成绩是:"+sumTop+" 所在行号是:"+sumTopLine);

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

使用道具 举报

发表于 2020-4-16 23:11:42 | 显示全部楼层

回帖奖励 +1 鱼币

本帖最后由 倒戈卸甲 于 2020-4-16 23:46 编辑

给你写个规范答案,希望你能悟出点什么吧。
  1. public class student {
  2. public static void main(String[] args) {
  3.        
  4.         int[][] scoreTable= {
  5.                         {80,75,78,93},
  6.                         {67,87,98,65},
  7.                         {86,72,60,76},
  8.                         {76,80,76,63},
  9.                         {82,70,90,67}
  10.         };
  11.         int        stuCount=scoreTable.length;
  12.         int projCount=scoreTable[0].length;
  13.         System.out.println("=========第一题==========");
  14.         demo1(scoreTable,stuCount,projCount);
  15.         System.out.println("=========第二题==========");
  16.         demo2(scoreTable,stuCount,projCount);
  17.         System.out.println("=========第三题==========");
  18.         demo3(scoreTable,stuCount,projCount);
  19. }

  20. /*
  21. * demo1
  22. * 计算并输出每个学生的总成绩
  23. */
  24. private static void demo1(int[][] scoreTable,int stuCount,int projCount) {
  25.         for (int i = 0; i < stuCount; i++) {
  26.                 int sum=0;
  27.                 for (int j = 0; j < projCount; j++) {
  28.                         sum +=scoreTable[i][j];
  29.                 }
  30.                 System.out.println(i+"号学生的成绩为:"+sum);
  31.         }
  32. }
  33. /*
  34. * demo2
  35. * 打印每科成绩最高分,并输出所在行号
  36. */
  37. private static void demo2(int[][] scoreTable,int stuCount,int projCount) {
  38.         for (int i = 0; i < projCount; i++) {
  39.                 //这里将四科成绩的每一科成绩单独存入一个数组
  40.                 int[] projectArr=new int[stuCount];
  41.                 for (int j = 0; j < stuCount; j++) {
  42.                         projectArr[j]=scoreTable[j][i];
  43.                 }
  44.                 System.out.print("第"+(i+1)+"科成绩:\t");
  45.                 findMax(projectArr,stuCount);
  46.         }
  47.        
  48. }
  49. //这里额外定义一个寻找最大值的函数,由第二问和第三问共同使用
  50. private static void findMax(int[]arr,int stuCount) {
  51.         int station=0;
  52.         int maxScore=0;
  53.         for (int i = 0; i < stuCount; i++) {
  54.                 if (arr[i]>maxScore) {
  55.                         maxScore=arr[i];
  56.                         station=i;
  57.                 }
  58.         }
  59.         System.out.println("最高分是"+maxScore+",由"+station+"号同学获得");
  60. }
  61. /*
  62. * demo3
  63. * 打印每科成绩最高分,并输出所在行号
  64. */
  65. private static void demo3(int[][] scoreTable,int stuCount,int projCount) {
  66.         //这里将五个人的总成绩存入一个数组
  67.         int[] studentArr=new int[stuCount];
  68.         for (int i = 0; i < stuCount; i++) {
  69.                 int sum=0;
  70.                 for (int j = 0; j < projCount; j++) {
  71.                         sum +=scoreTable[i][j];
  72.                 }
  73.                 studentArr[i]=sum;
  74.         }
  75.         System.out.print("总成绩:\t");
  76.         findMax(studentArr,stuCount);
  77. }
  78. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-17 07:58:44 | 显示全部楼层

回帖奖励 +1 鱼币

鱼币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-17 17:25:20 | 显示全部楼层
ba21 发表于 2020-4-16 22:06
二维数组是 1 个数组。

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-17 17:26:17 | 显示全部楼层
倒戈卸甲 发表于 2020-4-16 23:11
给你写个规范答案,希望你能悟出点什么吧。

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 01:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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