c - 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;
}
解决方案
在您的 main 中,您在方法范围内重新声明了 LD,这意味着 LD 现在在 main 中为 0(最有可能)。如果您删除主要的 LD 声明,它应该可以解决问题。
更改int N,LD,i,j,B;
为int N, i, j, B;
推荐阅读
- google-apps-script - 如果单元格日期等于今天,如何发送电子邮件
- java - 如何保存 editText 可见性状态(View.GONE)?
- python - 试图用蜘蛛生成器上的奇怪行为来回应亚马逊的验证码
- arduino - USART 通过 Arduino Leonardo 将十六进制代码传输到设备
- ffmpeg - 使用 ffmpeg 将 2 通道 .mov 文件转换为 .mp3
- c# - 如何将配置绑定到 JSON 对象数组 .Net Core
- python - 为什么在 ceph osd 抖动期间调用 boto3 list buckets 操作会返回 Bad Gateway (502)?
- c++ - C++ 中 [in] 等式运算符的求值顺序?
- c++ - 内联是否确定内部链接?
- javascript - 从浏览器中的另一个 js 文件访问一个 js 文件中的私有变量和方法