C二维数组练习
最后更新于:2022-04-01 14:28:24
这次实例的要求是:
在n行n列的二维整数数组中,按照以下要求选出两个数。首先从每行中选出最大数,在从选出的n个最大数中选出最小数;其次,从每行选出最小数,再从选出的n个小数中选出最大数。
下面就是我的代码,在注释中可以看到我的想法:
~~~
#include <stdio.h>
/**
* 实例要求:
* 在n行n列的二维整数数组中,
* 按照以下要求选出两个数。
* 首先从每行中选出最大数,在从选出的n个最大数中选出最小数;
* 其次,从每行选出最小数,再从选出的n个小数中选出最大数。
*
*/
int main(void)
{
int order;
printf("%s\n","Please enter the order of the matrix:");
scanf("%d",&order);
printf("Please input the elements of the matrix,from a[0][0] to a[%d][%d]:\n",order-1,order-1);
int matrix[order][order];
/**
* 获取用户输入,并填充到二维数组中
*/
int colums,rows;
for(rows = 0;rows < order;rows++){
for(colums = 0; colums < order;colums++){
scanf("%d",&matrix[rows][colums]);
//这里也可以这样写
//scanf("%d",matrix[rows]+colums);
}
}
/**
* 找到最大元素的最小元素
*
*/
//用于保存最大元素中的最小元素
int minInMax = 0;
for(rows = 0;rows < order;rows++){
//用于保存行最大元素
int maxInLine = 0;
for(colums = 0;colums < order;colums++){
if(matrix[rows][colums] > maxInLine)
maxInLine = matrix[rows][colums];
}
if(rows == 0){
//当获取到第一行的最大元素时,直接赋值给最小元素
minInMax = maxInLine;
}else{
if(minInMax > maxInLine)
minInMax = maxInLine;
}
}
printf("The minimum of maximum number is %d.\n",minInMax);
/**
* 找到最小元素的最大元素
*
*/
//用于保存最小元素中的最大元素
int maxInMin = 0;
for(rows = 0;rows < order;rows++){
//用于保存行最小元素
int minInLine = matrix[rows][0];
for(colums = 0;colums < order;colums++){
if(matrix[rows][colums] < minInLine)
minInLine = matrix[rows][colums];
}
if(rows == 0){
//当获取到第一行的最小元素时,直接赋值给最大元素
maxInMin = minInLine;
}else{
if(maxInMin < minInLine)
maxInMin = minInLine;
}
}
printf("The maximum of minimum number is %d.\n",maxInMin);
return 0;
}
~~~