JACK_C#_二维数组

            #region 从命令行输入一个4行4列的二维数组,编程实现:(1)求出其中的最大值和最小值及其对应的行列位置.(2)求出对角线上各元素之积.
            Console.WriteLine ("请输入4行4列的二维数组:");
            int[,] arr = new int[4,4];
            int max = arr[0,0],min = arr[0,0];
            int maxIndex1 = 0,maxIndex2 = 0;
            int minIndex1 = 0,minIndex2 = 0;
            for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
                    arr[i,j] = int.Parse(Console.ReadLine());
                }
            }

            //(1)最值
            for (int i = 0; i < 4; i++) {
            for (int j = 0; j < 4; j++) {
            if (max < arr[i,j]) {
                max = arr[i,j];
                maxIndex1 = i;
                maxIndex2 = j;
            }
            if (min > arr[i,j]) {
                min = arr[i,j];
                minIndex1 = i;
                minIndex2 = j;
            }
            }
            }
            Console.WriteLine ("最大值{0}的行列位置是:{1},{2},最小值{3}的行列位置是:{4},{5}",max,maxIndex1,maxIndex2,min,minIndex1,minIndex2);

            //(2)对角线
            int pro = 1;
            for (int i = 0; i < 4; i++) {
                pro *= (arr[i,i] * arr[i,3 - i]);
                Console.WriteLine ("对角线积:{0}",pro);
            }

            #endregion


            #region 从命令行中输入4个学生的3门课程的成绩,求出每门课程的平均数
            Console.WriteLine("输入每个同学的每科成绩:");        
            float[,] gradeArray = new float[4,3];
            float allGrade1 = 0;
            float allGrade2 = 0;
            float allGrade3 = 0;
                for (int i = 0; i < 4; i++) {
                for (int j = 0; j < 3; j++) {
                        float grade = float.Parse(Console.ReadLine());
                        gradeArray[i,j] = grade;
                    }
                }
                for (int i = 0; i < 4; i++) {
                    allGrade1 += gradeArray[i,0];
                    allGrade2 += gradeArray[i,1];
                    allGrade3 += gradeArray[i,2];
                }
            Console.WriteLine ("每科平均成绩为:{0},{1},{2}",allGrade1 / 4,allGrade2 / 4,allGrade3 / 4);


            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 4; j++) {
                    sum += gradeArray[i,j];
                }
                Console.WriteLine ("{0}门平均成绩为{1}",i+1,sum/4);
            }
            #endregion


            #region 1、有一个由0到9组成的交错数组如:{ {0,1,3,4,2}{4,5,7,9,1}{3,5,2} {4,6,8,2} },求出该数组中重复次数最多的元素,及重复了多少次,如 上述数组中重复次数最多的元素为2, 重复3次;
            int[][] number = new int[4][]{new int[]{0,1,3,4,2},new int[]{4,5,7,9,1},new int[]{3,5,2},new int[]{4,6,8,2}};
            int[] rep = new int[10];
            int maxCount = 0;
            int k = 0;
            for (; k < 10; k++) {   //用0~9去和数组中的数依次比较
                int    count =0;
                for (int i = 0; i < number.Length ; i++) {
                    for (int j = 0; j < number[i].Length; j++) {
                        if (k == number[i][j]) {
                            count++;
                        }
                    }
                }            
                rep[k] = count;     //把重复的次数count存进长度为10的一维数组中,对应的下标k就是该重复的数
            }
            int repNumber = 0;
            for (int i = 0; i < 10; i++) {
                if (maxCount < rep[i]) {
                    maxCount = rep[i];
                    repNumber = i;
                }
            }
            Console.WriteLine ("重叠次数最多为{0},数是{1}",maxCount,repNumber); 
            #endregion


            #region 1、求二维数组{{1,2,3}{4,5,6}{7,8,9}}的鞍点。(鞍点:在行中最大,在列中最小的元素的位置,二维数组也可能没有鞍点)
            int[,] arr = { { 1, 2, 3}, { 4, 5, 6 }, { 7, 8, 9 } };
            bool flag =true ;
            int maxIndex1= 0,maxIndex2 = 0;
            int minIndex1= 0;
            for (int i = 0; i < 3; i++) {
                int max =arr[i,0];
                for (int j =0; j < 3; j++) {    // 求一行的最大值
                    if(max < arr[i,j]){
                        max = arr[i,j];
                        maxIndex1 = i;
                        maxIndex2 = j;
                    }
                    }
                int min = max;

                for (int K = 0; K < 3; K++) {   //在最大值所在列求最小值
                    if(min > arr[K,maxIndex2]){
                        min = arr[K,maxIndex2];
                        minIndex1 = K;
                }
                }
                if(min == max){
                    Console.WriteLine ("鞍点:{0},{1}",maxIndex1,maxIndex2);
                    flag =true;
                    }
                }
            if (!flag) {
                Console.WriteLine ("无鞍点");
            }
            #endregion

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值