求助一个c程序的小问题
我下面的这个代码问题比较奇妙,我写了2层嵌套循环,但是内层循环居然无法执行,代码如下。(问题在注释处)我这个代码是写一道数据结构的练习题,求矩阵中马鞍点的算法,矩阵我就用二维数组代替了。本来想自己摸索摸索,结果出了这茬。。。。
#include <stdio.h>
#include <stdlib.h>
#define max_size 50
typedef struct
{
int min;
int j;
}Double;
typedef struct
{
Double data;
}OverLord;
void check(int a[],OverLord *m,int row,int lie)
{
int i,j,min,max,c,k,flag,b;
for(i=0;i<row;i++)
{
for(j=0;j<lie;j++) //就是在这里,经过我单步调试,发现在这里内层的j循环无法进行,不清楚为啥只能进行i 循环,从而导致结果出错。
{
min=a;
if(a<=min)
{
min=a;
c=j;
}
}
m->data.j=c;//这里由于内层循环无法进行导致我无法找到每一行的最小值,也就无法继续。
m->data.min=min;
}
for(k=0;k<row;k++)
{
for(i=0;i<row;i++)
{
flag=0;
max=m->data.min;
if(a.j]>max)
{
flag=0;
break;
}
else
{
flag=1;
}
}
if(flag==1)
b=m->data.j;
}
for(i=0;i<row;i++)
printf("%d ",b);
}
int main()
{
int row,lie,a,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);
}
for(i=0;i<max_size;i++)
{
m->data.j=0;
m->data.min=0;
}
check(a,m,row,lie);
} 是不是scanf在接受你的输入时出错,你写的是中间用空格分开,实际没有,导致lie赋值出错?你可以在scanf后面对输入的数据用printf先测试一下 BngThea 发表于 2018-8-3 09:12
是不是scanf在接受你的输入时出错,你写的是中间用空格分开,实际没有,导致lie赋值出错?你可以在scanf后 ...
还是不对,我在两条语句的后面都各加了一个printf,输出值也都正确。我把断点设置在check函数那里,当我输入完矩阵后,开始要进入chcek函数时,我检查lie的值发现列的值为1,可我明明输入的是5.。。。
页:
[1]