二维数组的操作:添加行和列
Manipulation of two-dimensional arrays: add rows and columns
问题是它没有向我显示添加行和列的结果,它没有做出相应的总和。
另一个细节是我没有正确打印行总和的短语,因为我省略了 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);
}
问题是它没有向我显示添加行和列的结果,它没有做出相应的总和。
另一个细节是我没有正确打印行总和的短语,因为我省略了 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);
}