hhhh还好还好 发表于 2018-8-3 00:30:50

求助一个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);
}

BngThea 发表于 2018-8-3 09:12:33

是不是scanf在接受你的输入时出错,你写的是中间用空格分开,实际没有,导致lie赋值出错?你可以在scanf后面对输入的数据用printf先测试一下

hhhh还好还好 发表于 2018-8-3 17:13:26

BngThea 发表于 2018-8-3 09:12
是不是scanf在接受你的输入时出错,你写的是中间用空格分开,实际没有,导致lie赋值出错?你可以在scanf后 ...

还是不对,我在两条语句的后面都各加了一个printf,输出值也都正确。我把断点设置在check函数那里,当我输入完矩阵后,开始要进入chcek函数时,我检查lie的值发现列的值为1,可我明明输入的是5.。。。
页: [1]
查看完整版本: 求助一个c程序的小问题