本文目录一览:
c语言举一个没有鞍点的例子
continue是用于节约时间的。
当发现当前的max的值比该列某个值大(于是可以确定这个值不是该列最小,即不可能是鞍点),就不必再检查该列的其他值了。
当然,检查了也无所谓,反正已经变成0的flag是不可能恢复成1的,所以是无效操作。
C语言鞍点问题
该程序的代码如下。是很具有人性化的设计方案,希望对你有所帮助。
/*找一个二维数组中的鞍点,即该位置上的元素是该行中最大,在该列上最小,也可能没有鞍点。*/
#include stdio.h
#define N 10 /*查找鞍点*/
#define M 10
void main()
{
int i,j,k,m,n,flag1,flag2,a[M][N],max,maxj;
printf("输入行数n:");
scanf("%d",n);
printf("输入列数m:");
scanf("%d",m);
for(i=0;in;i++)
{
printf("请输入第%d行:",i+1);
for(j=0;jm;j++)
scanf("%d",a[i][j]);
}
printf("\n");
for(i=0;in;i++)
{
for(j=0;jm;j++)
printf("%5d",a[i][j]);
printf("\n");
}
flag2=0;
for(i=0;in;i++)
{
max=a[i][0];
for(j=0;jm;j++)
if(a[i][j]max)
{
max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;knflag1;k++)
if(maxa[k][maxj])
flag1=0;
if(flag1)
{
printf("\n第%d行,第%d列的%d是鞍点\n",i+1,maxj+1,max);
flag2=1;
}
}
if(!flag2)
printf("\n矩阵中无鞍点!\n");
}
此外谭浩强版的C程序设计答案可以从下面网址下载
如果该回答你很满意,别忘记加分哦。呵呵。
C语言中关于二维数组的“鞍点”问题
#include stdio.h
int main()
{
int a[3][3]={7,8,9,4,5,6,1,2,3};
int b[10];
int i,j,hmax,lmin,*p_hmax,*p_lmin;
p_hmax=hmax;
p_lmin=lmin; /*i行 j列 hmax行最大 lmin列最小*/
for(i=0;i=2;i++) /*求出每行的最大数*/
{
hmax=a[i][0];
for(j=0;j=2;j++)
{
if(hmaxa[i][j])
{
hmax=a[i][j];
}
}
b[i]=*p_hmax;
}
for(j=0;j=2;j++) /*求出每列的最小数*/
{
lmin=a[0][j];
for(i=0;i=2;i++)
{
if(lmina[i][j])
{
lmin=a[i][j];
}
}
b[j+3]=*p_lmin;
}
for(i=0;i=2;i++) /*判断每行的最大数和每列的最小数是否相等*/
if(b[i]==b[i+3])
printf("%d\n",b[i]);
else
printf("没有鞍点\n");
return 0;
}
你试试吧!!我在vs上调试的
用c语言程序编写 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小,也可能没有鞍
#define N 10
#define M 10
void main( )
{ int i, j, k, m, n, flag1, flag2, a[N][M], max, maxj;
printf("输入行列数n,m:");
scanf("%d%d", n,m);
for (i =0; i n; i ++)
for(j=0;jm;j++)
scanf("%d",a[i][j]);
flag2=0;
for(i =0; i n; i ++)
{ max=a[i][0];
for(j=0;jm;j++)
if(a[i][j]max)
{ max=a[i][j];
maxj=j;
}
for(k=0,flag1=1;knflag1;k++)
if(maxa[k][maxj])
{ printf("第%d 行,第%d 列的%d 是鞍点\n", i,maxj,max);
flag2=1;}
if(flag1) flag1=0;
}
if(!flag2) printf(" 矩阵中无鞍点!\n");
}