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