C - 将二维数组传递给函数只打印第一行

问题描述 投票:0回答:1

我想把一个静态的二维数组传递给一个函数,但是当我试图在这个函数中打印矩阵时,它只打印第一行。是否在向函数传递参数时有什么问题?如果我尝试在主程序中打印矩阵,打印成功后会显示完整的矩阵。

#include <stdio.h>
#include <stdlib.h>

const int LD=10;

int diagdom(int,int,float(*)[]);

int main(){
    float A[LD][LD];
    int N,LD,i,j,B;
    scanf("%d",&N);
    for (i=0;i<N;i++){
        for(j=0;j<N;j++){
            scanf("%f",&A[i][j]);
        }
    }

    B=diagdom(LD,N,A);
    printf("%d \n",B);
    return 0;
}

int diagdom(int LD, int N, float A[][LD]){
    int k,h;
    int i,j,cost;
    cost =-1;
    i=-1;

    for (i=0;i<N;i++){
        for(j=0;j<N;j++){
            printf("%f \n",A[i][j]);
        }
    }

    do {
        i=i+1;
        k=0;
        h=0;
        for (j=0;j<N;j++){

            if(j==i){
                h=abs(A[i][j]);
                printf("%d. \n", h);
            }
            else{
                k=k+abs(A[i][j]);
                }
        }
            if(h<k){
                cost=i;                    
            }
        } while(!(i==N || cost!=-1));
        return cost;
}
c function multidimensional-array printf subroutine
1个回答
0
投票

在你的main中,你在方法作用域中重新声明了LD,这意味着LD现在在main中是0(很可能)。如果你在main中删除LD声明,应该可以解决这个问题。

改变 int N,LD,i,j,B;int N, i, j, B;

© www.soinside.com 2019 - 2024. All rights reserved.