鱼C论坛

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

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

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

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

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

x
这个的第二问    第二张是代码   改来改去改蒙b了求大佬写下代码   写第二问中的一个就行
最佳答案
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[4]; // 保存科目最高分
                int[] kmTopLine = new int[4]; // 保存科目最高分所在行号
                
                int sum, sumTop, sumTopLine;
                
                sumTop = 0; // 保存最高总成绩
                sumTopLine = 0; // 保存最高总成绩所在行
                for(int x=0; x<scores.length; x++) // 遍历行
                {
                        sum = 0;
                        for(int y=0; y<scores[x].length; y++) // 遍历列
                        {
                                // 用2个2维数组分别保存每科最高分及所在行号
                                if (kmTop[y] < scores[x][y])
                                {
                                        kmTop[y] = scores[x][y];
                                        kmTopLine[y] = x+1;
                                }
                                
                                // 计算学生总成绩
                                sum += scores[x][y];                                
                                
                                // 最高总成绩及所在行号
                                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[x]+" 所在行号是:"+kmTopLine[x]);
                }
                System.out.println();
                
                // 打印最高总成绩及所在行号
                System.out.println("最高总成绩是:"+sumTop+" 所在行号是:"+sumTopLine);

        }
}
批注 2020-04-16 180136.png
批注 2020-04-16 211105.png

评分

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

查看全部评分

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

使用道具 举报

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

回帖奖励 +1 鱼币

#include <stdio.h>
int main(void)
{
    int scores[5][4]={{80,75,78,93},{67,87,98,65},{86,72,60,76},{76,80,76,63},{82,70,90,67}};
    int sum[5]={0},sco_h[4]={0},h[4]={0},i,j,sum_h=0,hs;
    for (i=0;i<5;i++){
        for (j=0;j<4;j++){
            sum[i]+=scores[i][j];
            if (sco_h[j]<scores[i][j]){
                sco_h[j]=scores[i][j];
                h[j]=i+1;
            }
        }
        if (sum[i]>sum_h){
            sum_h=sum[i];
            hs=i+1;
        }
        printf("第%d名同学的总成绩是:%d\n",i+1,sum[i]);
    }
    for(j=0;j<4;j++){
        printf("科目%d的最高分是%d,在第%d行\n",j+1,sco_h[j],h[j]);
    }
    printf("第%d名同学的总成绩最高,总成绩是:%d\n",hs,sum_h);
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

回帖奖励 +1 鱼币

二维数组是 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[4]; // 保存科目最高分
                int[] kmTopLine = new int[4]; // 保存科目最高分所在行号
                
                int sum, sumTop, sumTopLine;
                
                sumTop = 0; // 保存最高总成绩
                sumTopLine = 0; // 保存最高总成绩所在行
                for(int x=0; x<scores.length; x++) // 遍历行
                {
                        sum = 0;
                        for(int y=0; y<scores[x].length; y++) // 遍历列
                        {
                                // 用2个2维数组分别保存每科最高分及所在行号
                                if (kmTop[y] < scores[x][y])
                                {
                                        kmTop[y] = scores[x][y];
                                        kmTopLine[y] = x+1;
                                }
                                
                                // 计算学生总成绩
                                sum += scores[x][y];                                
                                
                                // 最高总成绩及所在行号
                                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[x]+" 所在行号是:"+kmTopLine[x]);
                }
                System.out.println();
                
                // 打印最高总成绩及所在行号
                System.out.println("最高总成绩是:"+sumTop+" 所在行号是:"+sumTopLine);

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

使用道具 举报

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

回帖奖励 +1 鱼币

本帖最后由 倒戈卸甲 于 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[0].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[i][j];
                }
                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[stuCount];
                for (int j = 0; j < stuCount; j++) {
                        projectArr[j]=scoreTable[j][i];
                }
                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[i]>maxScore) {
                        maxScore=arr[i];
                        station=i;
                }
        }
        System.out.println("最高分是"+maxScore+",由"+station+"号同学获得");
}
/*
 * demo3
 * 打印每科成绩最高分,并输出所在行号
 */
private static void demo3(int[][] scoreTable,int stuCount,int projCount) {
        //这里将五个人的总成绩存入一个数组
        int[] studentArr=new int[stuCount];
        for (int i = 0; i < stuCount; i++) {
                int sum=0;
                for (int j = 0; j < projCount; j++) {
                        sum +=scoreTable[i][j];
                }
                studentArr[i]=sum;
        }
        System.out.print("总成绩:\t");
        findMax(studentArr,stuCount);
}
}
想知道小甲鱼最近在做啥?请访问 -> 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-12-23 01:56

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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