输出鞍点

一、实验目的

实验目的:练习多维数组的用法

二、实验原理

1、数据结构的设计(写出构造的数据类型,即自己定义的结构体)

本实验没有用到自己定义数据类型

2、算法分析(算法用流程图或自然语言)

  先定义四行五列行列式以及各种变量,输入行列式,开始假设a[i][0]最大,找出第i行最大的数,对这个数的列号进行储存,再判断这个数是否为该列最小的数,用1表示是鞍点,0表示否,若是输出鞍点;若不是,跳出循环输出Not found.

三、主要数据结构和算法

四、实验结果及分析

1、源程序(见附录)

2、测试结果截图 写出测试程序的数据,至少写三组数据,并把每组测试结果截图)

(1)第一组测试数据及结果截图

1 2 3 4 11

2 4 6 8 12

3 6 9 10 15

4 8 12 16 7

(2)第一组测试数据及结果截图

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15

4 8 12 16 20

 

(3)第一组测试数据及结果截图

1 2 3 4 11

2 4 6 8 10

3 6 9 10 15

4 8 12 16 20

 

五、心得体会(自己在编程过程中对语法,写代码风格,实验本身的理解,以及以后写程序注意的问题)

1. 开始时假设a[i][0]最大,找出各行最大值和该数的列号进行储存;

2.了解break和continue的区别;

3.注意不符合条件时输出要跳出for循环

#include<stdio.h>
#define N 4
#define M 5
int main()
{
    int i,j,k,a[N][M],max,maxj,flag;
    for(i=0;i<N;i++)
        for(j=0;j<M;j++)//数列为四行五列; 
            scanf("%d",&a[i][j]);
    for(i=0;i<N;i++)
    {    max=a[i][0];//开始时假设a[i][0]最大; 
        maxj=0;//默认为0; 
        for(j=0;j<M;j++)//找出第i行中最大的数; 
            if(a[i][j]>max)
            {
                max=a[i][j];//将本行最大的数存入max;
 
                maxj=j;//最大数的所在列号存入maxj; 
            }
            flag=1;//假设是鞍点,以1表示; 
            for(k=0;k<N;k++)
            {
                if(max>a[k][maxj])
                {
                    flag=0;
                    continue;
                }
            }
            if(flag) 
            {
                printf("a[%d][%d]=%d\n",i,maxj,max);
                break;
            }
    }
if(!flag)//如果flag为0表示鞍点不存在; 
{
    printf("Not found.");
}
return 0;
}

 

posted @ 2021-06-01 20:40  烤山药护体  阅读(23)  评论(0编辑  收藏  举报