首页 > 解决方案 > C - 将二维数组传递给函数仅打印第一行

问题描述

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

#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;
}

标签: cfunctionmultidimensional-arrayprintfsubroutine

解决方案


在您的 main 中,您在方法范围内重新声明了 LD,这意味着 LD 现在在 main 中为 0(最有可能)。如果您删除主要的 LD 声明,它应该可以解决问题。

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


推荐阅读