C语言例程:求解二维数组的最大/最小元素

目录

  • 求解二维数组的最大/最小元素
    • 实例说明
    • 实例解析
  • 程序代码
  • 程序运行截图
  • 归纳注释

求解二维数组的最大/最小元素

实例说明

在 n 行 n 列的二维整数数组中,按以下要求选出两个数。首先从每行选出最大数,再从选出
的 n 个大数中选出最小数;其次,从每行选出最小数,再从选出的 n 个小数中选出最大数。

实例解析

设二维数组为 a[ ][ ],首先在 n 行 n 列二维整数数组中,从每行选出最大数,再从选出的 n
个大数中选出最小数,可以用以下算法实现:

[算法 1]在二维整数数组中,从每行选出最大数,再从选出的大数中选出最小数

{/*设最小元变量用 min 标记,各行的最大元变量用 max 标记*/ 
 for(min=a[0][0],row=0;row<n;row++)
  { 
 /*从每行选出最大数*/ 
 for(max=a[row][0],col=1;col<n;col++) /*从 row 行选出最大数*/ 
 if(max<a[row][col]) 
 max=a[row][col]; 
 if(min>max)/*保存至 row 行的最小数*/ 
 min=max; 
 } 
 printf("The minimum of maximum numbers is %d\n",min) ; 
}

从每行选出最小数,再从选出的 n 个小数中选出最大数,有如下的算法:

[算法 2]在二维整数数组中,从每行选出最小数,再从选出的小数中选出最大数

{/*设最大元变量用 max 标记,各行的最小元变量用 min 标记*/ 
 for(max=a[0][0],row=0;row<n;row++) 
 { 
 /*从每行选出最大数*/ 
 for(min=a[row][0],col=1;col<n;col++) /*从 row 行选出最小数*/ 
 if(min>a[row][col]) 
 min=a[row][col]; 
 if(max<min)/*保存至 row 行的最大数*/ 
 max=min; 
 } 
 printf("The maximum of minimum numbers is %d\n",max); 
}

程序代码

#include <stdio.h>
// system("cls");/* 清屏 */
void clrscr(){
    system("cls");/* 清屏 */
}
/* 计算二维数组的最大最小值*/
#define MAXN 20
int a[MAXN][MAXN];

int main()
{
    int min, /* 存储最小值 */
    max; /* 存储最大值 */
    int row,col,n;
    clrscr();
    printf("Please input the order of the matrix:\n");/* 输入方阵的阶次 */
    scanf("%d",&n);
    printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n",n-1,n-1);
    for(row=0;row<n;row++)
        for(col=0;col<n;col++)
            scanf("%d",&a[row][col]);
    for(min=a[0][0],row=0;row<n;row++)
    {
        /* 从每行选出最大数 */
        for(max=a[row][0],col=1;col<n;col++)/*从 row 行选出最大数 */
            if(max<a[row][col])
                max=a[row][col];
        if(min>max)/* 保存至 row 行的最小数 */
            min=max;
    }
    printf("The minimum of maximum number is %d\n",min);
    for(max=a[0][0],row=0;row<n;row++)
    {
        /* 每行选出最小数 */
        for(min=a[row][0],col=1;col<n;col++)/* 从 row 行选出最小数 */
            if(min>a[row][col])
                min=a[row][col];
        if(max<min)/*保存至 row 行的最大数 */
            max=min;
    }
    printf("The maximum of minimum numbers is %d\n",max);
    printf("\nPress any key to quit...\n");
    getch();
    return 0;
}

程序运行截图

归纳注释

本例应用数组 primes[]来存储已经找到的前 n−1 个质数,再通过对第 n−1 个质数加 2,并测试
是否能被前 n−1 个质数整除来寻找第 n 个质数,从而可以求出前 n 个质数。这里 n 可以足够大(取
决于 int 型数据的取值范围,可以改为 long 型数组,以便求取更多的质数)。
本例子中求取前 n 个质数,n 用宏定义来实现,也可以通过用户的输入来进行。比如定义一
个最大的数以便定义数组“#define MAX 1000”,数组定义改为 int primes[MAX],n 则由用户输入。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐