1556134029 发表于 2020-4-16 21:14:04

还是一个关于考试分数的问题

这个的第二问    第二张是代码   改来改去改蒙b了求大佬写下代码   写第二问中的一个就行

sunrise085 发表于 2020-4-16 21:52:19

#include <stdio.h>
int main(void)
{
    int scores={{80,75,78,93},{67,87,98,65},{86,72,60,76},{76,80,76,63},{82,70,90,67}};
    int sum={0},sco_h={0},h={0},i,j,sum_h=0,hs;
    for (i=0;i<5;i++){
      for (j=0;j<4;j++){
            sum+=scores;
            if (sco_h<scores){
                sco_h=scores;
                h=i+1;
            }
      }
      if (sum>sum_h){
            sum_h=sum;
            hs=i+1;
      }
      printf("第%d名同学的总成绩是:%d\n",i+1,sum);
    }
    for(j=0;j<4;j++){
      printf("科目%d的最高分是%d,在第%d行\n",j+1,sco_h,h);
    }
    printf("第%d名同学的总成绩最高,总成绩是:%d\n",hs,sum_h);
    return 0;
}

ba21 发表于 2020-4-16 22:06:09

二维数组是 1 个数组。
class Test
{
        public static void main(String[] args)
        {
                // 定义5行4列的二维数据同时初始化。
                int[][] scores = {{80, 75, 78, 93},{67, 87, 98, 65},{86, 72, 60, 76},{76, 80, 76, 63},{82, 70, 90, 67}};
               
                int[] kmTop = new int; // 保存科目最高分
                int[] kmTopLine = new int; // 保存科目最高分所在行号
               
                int sum, sumTop, sumTopLine;
               
                sumTop = 0; // 保存最高总成绩
                sumTopLine = 0; // 保存最高总成绩所在行
                for(int x=0; x<scores.length; x++) // 遍历行
                {
                        sum = 0;
                        for(int y=0; y<scores.length; y++) // 遍历列
                        {
                                // 用2个2维数组分别保存每科最高分及所在行号
                                if (kmTop < scores)
                                {
                                        kmTop = scores;
                                        kmTopLine = x+1;
                                }
                               
                                // 计算学生总成绩
                                sum += scores;                               
                               
                                // 最高总成绩及所在行号
                                if(sumTop < sum)
                                {
                                        sumTop = sum;
                                        sumTopLine = x+1;
                                }
                        }
                        // 打印学生总成绩
                        System.out.println("第"+(x+1)+"名学生的总成绩是:"+sum);
                }
                System.out.println();
               
                // 打印每科最高分及所在行号
                for(int x=0; x<kmTop.length; x++)
                {
                        System.out.println("科目"+(x+1)+"最高分是:"+kmTop+" 所在行号是:"+kmTopLine);
                }
                System.out.println();
               
                // 打印最高总成绩及所在行号
                System.out.println("最高总成绩是:"+sumTop+" 所在行号是:"+sumTopLine);

        }
}

倒戈卸甲 发表于 2020-4-16 23:11:42

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

给你写个规范答案,希望你能悟出点什么吧。
public class student {
public static void main(String[] args) {
       
        int[][] scoreTable= {
                        {80,75,78,93},
                        {67,87,98,65},
                        {86,72,60,76},
                        {76,80,76,63},
                        {82,70,90,67}
        };
        int        stuCount=scoreTable.length;
        int projCount=scoreTable.length;
        System.out.println("=========第一题==========");
        demo1(scoreTable,stuCount,projCount);
        System.out.println("=========第二题==========");
        demo2(scoreTable,stuCount,projCount);
        System.out.println("=========第三题==========");
        demo3(scoreTable,stuCount,projCount);
}

/*
* demo1
* 计算并输出每个学生的总成绩
*/
private static void demo1(int[][] scoreTable,int stuCount,int projCount) {
        for (int i = 0; i < stuCount; i++) {
                int sum=0;
                for (int j = 0; j < projCount; j++) {
                        sum +=scoreTable;
                }
                System.out.println(i+"号学生的成绩为:"+sum);
        }
}
/*
* demo2
* 打印每科成绩最高分,并输出所在行号
*/
private static void demo2(int[][] scoreTable,int stuCount,int projCount) {
        for (int i = 0; i < projCount; i++) {
                //这里将四科成绩的每一科成绩单独存入一个数组
                int[] projectArr=new int;
                for (int j = 0; j < stuCount; j++) {
                        projectArr=scoreTable;
                }
                System.out.print("第"+(i+1)+"科成绩:\t");
                findMax(projectArr,stuCount);
        }
       
}
//这里额外定义一个寻找最大值的函数,由第二问和第三问共同使用
private static void findMax(int[]arr,int stuCount) {
        int station=0;
        int maxScore=0;
        for (int i = 0; i < stuCount; i++) {
                if (arr>maxScore) {
                        maxScore=arr;
                        station=i;
                }
        }
        System.out.println("最高分是"+maxScore+",由"+station+"号同学获得");
}
/*
* demo3
* 打印每科成绩最高分,并输出所在行号
*/
private static void demo3(int[][] scoreTable,int stuCount,int projCount) {
        //这里将五个人的总成绩存入一个数组
        int[] studentArr=new int;
        for (int i = 0; i < stuCount; i++) {
                int sum=0;
                for (int j = 0; j < projCount; j++) {
                        sum +=scoreTable;
                }
                studentArr=sum;
        }
        System.out.print("总成绩:\t");
        findMax(studentArr,stuCount);
}
}

Mike_python小 发表于 2020-4-17 07:58:44

鱼币

1556134029 发表于 2020-4-17 17:25:20

ba21 发表于 2020-4-16 22:06
二维数组是 1 个数组。

感谢{:10_256:}

1556134029 发表于 2020-4-17 17:26:17

倒戈卸甲 发表于 2020-4-16 23:11
给你写个规范答案,希望你能悟出点什么吧。

感谢{:10_256:}
页: [1]
查看完整版本: 还是一个关于考试分数的问题