gpt4 book ai didi

c - 二维数组的操作: add rows and columns

转载 作者:行者123 更新时间:2023-11-30 20:09:45 25 4
gpt4 key购买 nike

问题是它没有向我显示添加行和列的结果,也没有进行相应的求和。

另一个细节是我没有正确打印行总和的短语,因为我省略了 is:打印列时也会发生同样的情况。

屏幕上的错误是:

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

最佳答案

您需要学习更多指针以及如何将二维数组传递给函数。当您将2D数组传递给函数并且在该函数中时,您需要使用指向数组的指针而不是双指针来捕获。

您的 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);
}

关于c - 二维数组的操作: add rows and columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com