C - 将二维数组传递给函数仅打印第一行
C - passing 2-D array to function prints only first row
我想将一个静态二维数组传递给一个函数,但是当我尝试在此函数中打印矩阵时,它只打印了第一行。将参数传递给函数时有什么问题吗?如果我尝试在主程序中打印矩阵,打印成功会显示完整的矩阵。
#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;
我想将一个静态二维数组传递给一个函数,但是当我尝试在此函数中打印矩阵时,它只打印了第一行。将参数传递给函数时有什么问题吗?如果我尝试在主程序中打印矩阵,打印成功会显示完整的矩阵。
#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;