我想把一个静态的二维数组传递给一个函数,但是当我试图在这个函数中打印矩阵时,它只打印第一行。是否在向函数传递参数时有什么问题?如果我尝试在主程序中打印矩阵,打印成功后会显示完整的矩阵。
#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;
}
在你的main中,你在方法作用域中重新声明了LD,这意味着LD现在在main中是0(很可能)。如果你在main中删除LD声明,应该可以解决这个问题。
改变 int N,LD,i,j,B;
到 int N, i, j, B;