以下程序代码均为原创,且调试通过。因为实践仓促,程序结构不一定合理,欢迎讨论!
实验内容:
判断一个二维数组(数组元素的值用scanf输入)是否有“鞍点”,即该位置上的元素在该行上最大,在该列上上最小。如果有,输出其行号和值,若无,给出提示。
1、算法思想
循环读入一个二维数组,依次考察每一个元素,看该元素在行上是否最大,在列上是否最小,满足条件输出该位置和值,所有的元素都不符合条件的话输出提示。需要用到三个记数变量,详细代码与下:
2、程序代码
#include "stdio.h"
main()
{int my[3][3];int a,b,c,d,tem,tem2,tem3;
printf("##############鞍点测试程序###############\n");
printf("请输入一个3*3的二维数组\n");
tem=0,tem2=0,tem3=0;
for(a=0;a<3;a++)
for(b=0;b<3;b++)
{scanf("%d",&my[a][b]);
}
for(a=0;a<3;a++)
{ for(b=0;b<3;b++)
printf("%d ",my[a][b]);
printf("\n");
}
for(a=0;a<3;a++)
for(b=0;b<3;b++)
{
{for(c=0;c<3;c++)
{if(my[a][b]>my[a][c]) tem=tem+1;}//判断是否行最大
for(d=0;d<3;d++)
{if(my[a][b]<my[d][b]) tem2=tem2+1;}//判断是否列最大
}
if (tem==2&&tem2==2){printf("鞍点:my[%d][%d]=%d\n",a,b,my[a][b]);tem3=1;}
tem=0,tem2=0;
}
if(tem3==0)printf("没有鞍点\n");
}