实例13_求解二维数组的最大元素和最小元素
实例说明:
看完题,我觉得作者应该就是让我输出一个数组中最大的数字和最小的数字吧,于是开始写了。
1、先给数组赋值
2、然后遍历数组,通过中间值,选出最大的和最小的。
1 /** 2 * Copyright (c) 1991 - 2016 Arvin Tang. 3 * All rights reserved. 4 * 5 * 文件名称:实例13 6 * 简要描述:求解二维数组的最大和最小元素 7 * 8 * 当前版本:1.0 9 * 作 者: 10 * 完成日期:2016-1-7 11 * 修订说明: 12 * 13 * 取代版本: 14 * 作 者: 15 * 完成日期: 16 * 修订说明: 17 */ 18 #include <stdio.h> 19 #include <stdlib.h> 20 // 21 //clrscr();函数不是标准的C函数,只存在Tuber C中且#include <conio.h>。 22 //但是可以用system("cls");代替,且#include <stdlib.h>。 23 24 int main(int argc, char const *argv[]) 25 { 26 //求解二维数组的最大和最小元素 27 28 int max=0;//最大值 29 int min=0;//最小值 30 31 int n;//方阵阶次 32 33 int a[20][20];//暂时先定义一个最大20阶的 34 35 int row;//行 36 int col;//列 37 38 printf("请输入方阵的阶次:\n"); 39 scanf("%d", &n); 40 41 for(row = 0; row < n; row++) 42 { 43 for(col = 0; col < n; col++) 44 { 45 scanf("%d", &a[row][col]); 46 } 47 } 48 49 for(row = 0; row < n; row++) 50 { 51 for(col = 0; col < n; col++) 52 { 53 if(a[row][col] > max) 54 { 55 max = a[row][col]; 56 } 57 } 58 } 59 60 for(row = 0; row < n; row++) 61 { 62 for(col = 0; col < n; col++) 63 { 64 if(a[row][col] < min) 65 { 66 min = a[row][col]; 67 } 68 } 69 } 70 71 printf("最大的数是:%d\n", max); 72 printf("最小的数是:%d\n", min); 73 74 return 0; 75 }
等代码写完了,我发现功能实现了,但是似乎有点满足作者的要求啊!人家让先把每一行最大(小)的数字输出,然后再从这几个数字中比较出最大(小)输出。
代码
书上给的代码:
1 #define MAXN 20 2 int a[MAXN][MAXN]; 3 main() 4 { 5 int min, /* 存储最小值 */ 6 max; /* 存储最大值 */ 7 int row,col,n; 8 clrscr(); 9 printf("Please input the order of the matrix:\n");/* 输入方阵的阶次 */ 10 scanf("%d",&n); 11 printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1); 12 for(row=0;row<n;row++) 13 for(col=0;col<n;col++) 14 scanf("%d",&a[row][col]); 15 for(min=a[0][0],row=0;row<n;row++) 16 { 17 /* 从每行选出最大数 */ 18 for(max=a[row][0],col=1;col<n;col++)/*从row行选出最大数 */ 19 if(max<a[row][col]) 20 max=a[row][col]; 21 if(min>max)/* 保存至row行的最小数 */ 22 min=max; 23 } 24 printf("The minimum of maximum number is %d\n",min); 25 for(max=a[0][0],row=0;row<n;row++) 26 { 27 /* 每行选出最小数 */ 28 for(min=a[row][0],col=1;col<n;col++)/* 从row行选出最小数 */ 29 if(min>a[row][col]) 30 min=a[row][col]; 31 if(max<min)/*保存至row行的最大数 */ 32 max=min; 33 } 34 printf("The maximum of minimum numbers is %d\n",max); 35 printf("\nPress any key to quit...\n"); 36 getch(); 37 }