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; } ~~~
';