|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我下面的这个代码问题比较奇妙,我写了2层嵌套循环,但是内层循环居然无法执行,代码如下。(问题在注释处)
我这个代码是写一道数据结构的练习题,求矩阵中马鞍点的算法,矩阵我就用二维数组代替了。本来想自己摸索摸索,结果出了这茬。。。。
#include <stdio.h>
#include <stdlib.h>
#define max_size 50
typedef struct
{
int min;
int j;
}Double;
typedef struct
{
Double data[max_size];
}OverLord;
void check(int a[][4],OverLord *m,int row,int lie)
{
int i,j,min,max,c,k,flag,b[10];
for(i=0;i<row;i++)
{
for(j=0;j<lie;j++) //就是在这里,经过我单步调试,发现在这里内层的j循环无法进行,不清楚为啥只能进行i 循环,从而导致结果出错。
{
min=a[i][j];
if(a[i][j]<=min)
{
min=a[i][j];
c=j;
}
}
m->data[i].j=c; //这里由于内层循环无法进行导致我无法找到每一行的最小值,也就无法继续。
m->data[i].min=min;
}
for(k=0;k<row;k++)
{
for(i=0;i<row;i++)
{
flag=0;
max=m->data[k].min;
if(a[i][m->data[k].j]>max)
{
flag=0;
break;
}
else
{
flag=1;
}
}
if(flag==1)
b[k]=m->data[k].j;
}
for(i=0;i<row;i++)
printf("%d ",b[i]);
}
int main()
{
int row,lie,a[3][4],i,j;
OverLord *m;
m=(OverLord *)malloc(sizeof(OverLord));
printf("请输入数据*2:");
scanf("%d %d",&row,&lie);
for(i=0;i<3;i++)
{
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
}
for(i=0;i<max_size;i++)
{
m->data[i].j=0;
m->data[i].min=0;
}
check(a,m,row,lie);
} |
|