问题是它没有显示resultsadd行和列,它没有相应的总和。
另一个细节是我没有正确打印行总和的短语,因为我省略了: 打印列时会发生同样的情况。
屏幕上的错误是:
p1.c: In function ‘sum’: p1.c:34:8: warning: assignment makes integer from pointer without a cast [-Wint-conversion] suma= suma + A[i][j]; p1.c:36:10: warning: too many arguments for format [-Wformat-extra-args] printf("La suma de la fila %i", i+1, " es: %i\n", suma); p1.c: In function ‘sumc’: p1.c:47:9: warning: assignment makes integer from pointer without a cast [-Wint-conversion] sumac= sumac + A[i][j]; p1.c:49:10: warning: too many arguments for format [-Wformat-extra-args] printf("La suma de la columa %i", j+1, " es: %i\n ", sumac);
#include <stdio.h>
#define M 2
#define N 3
void sum();
void sumc();
int main(void){
int A[M][N];
printf("Este programa lee una matriz y suma de manera independiente las filas y las columnas de esta\n");
printf("Ingrese las entradas de la matriz\n");
for(int i=0; i<M; i++)
{
for(int j=0; j<N; j++)
{
scanf("%i", &A[i][j]);
}
printf("\n");
}
sum(&A[M][N]);
sumc(&A[M][N]);
}
void sum(int *A[M][N]){
for(int i=0; i<M; i++)
{
int suma=0;
for(int j=0; j<N; j++)
{
suma= suma + A[i][j];
}
printf("La suma de la fila %i", i+1, " es: %i\n", suma);
}
return;
}
void sumc(int *A[M][N]){
for(int j=0; j<N; j++)
{
int sumac=0;
for(int i=0; i<M; i++)
{
sumac= sumac + A[i][j];
}
printf("La suma de la columa %i", j+1, " es: %i\n ", sumac);
}
return;
}
答案 0 :(得分:2)
你需要学习更多指针&amp; 如何将2D数组传递给函数。当您将2D
数组传递给函数&amp;在该函数中,您需要使用指向数组的指针而不是使用双指针。
您的printf
声明也是错误的。
printf("La suma de la fila %i", i+1, " es: %i\n", suma);
应该是
printf("La suma de la fila %i es: %i\n",i+1, suma);
这是修改后的代码
#define M 2
#define N 3
void sum(int (*A)[N],int r,int c){ /* r is row & c is column */
for(int i=0; i<r; i++) {
int suma=0;
for(int j=0; j<c; j++) {
suma= suma + A[i][j];
}
printf("La suma de la fila %i es: %i\n",i+1, suma);
}
return;
}
void sumc(int (*A)[N],int r,int c){
for(int j=0; j<c; j++){
int sumac=0;
for(int i=0; i<r; i++) {
sumac= sumac + A[i][j];
}
printf("La suma de la columa %i es: %i\n ",j+1, sumac);
}
return;
}
int main(void){
int A[M][N];
printf("Este programa lee una matriz y suma de manera independiente las filas y las columnas de esta\n");
printf("Ingrese las entradas de la matriz\n");
for(int i=0; i<M; i++) {
for(int j=0; j<N; j++) {
scanf("%i", &A[i][j]);
}
printf("\n");
}
sum(A,M,N);/* passing 2D aray base address,no of row and no of column */
printf("\n=====\n");
sumc(A,M,N);
}