多维矩阵和函数有问题

问题描述 投票:0回答:2

首先我写了一个反转矩阵的程序...但现在我想在函数中分离第一个程序,现在它有一个我无法发现的错误

#include <stdio.h>
#include <time.h>
#define  Row        2
#define  Column     3

int  printb(int board[2][3]);
int revrsboard(int board1[2][3],int board2[3][2]);

int main(){
int board1[Row][Column]={ {1,2,3},   // ο αρχικος πινακας
               {4,5,6}
               };

int board2[Column][Row]={0};
int  printb(board1); //ektyposh pinaka
printf("\n");
int  revrsboard(board1,board2);  //anastyrofh kai ektyposh


return 0;
}


//print 1
int  initb(int board[2][3]){
int k,l ;

  for (k=0;k<2;k++){
    for(l=0;l<3;l++){
        printf("%4d |",board[k][l]);
    }
printf("\n");
          }

}

// reversing print
int  revrsboard(int board1[Row][Column],int board2[Column][Row]) {
int i=0 ,j=0,k,l ;
for(i=0;i<Row;i++){
    for(j=0;j<Column;j++){
        board2[j][i]=board1[i][j];
    }
}

for (k=0;k<3;k++){
    for(l=0;l<2;l++){
        printf("%4d |",board2[k][l]);
    }
printf("\n");
}

}

首先我只使用了主要功能,程序运行完美。

但是我这次想使用更多函数重写我的程序......当我编译并运行它时,它什么也打印不出来

所以我需要一些帮助来弄清楚如何正确使用函数和多维矩阵

c function matrix multidimensional-array func
2个回答
1
投票

函数中的这一行

main

int  revrsboard(board1,board2);  //anastyrofh kai ektyposh

不调用函数。它只是声明这个函数存在,并且如果被调用的话将返回一个

int

要调用该函数,只需调用:

revrsboard(board1,board2);   //anastyrofh kai ektyposh

(前面没有

int


此外,您还声明函数

revrsboard
在完成时将返回
int
值。但函数体中没有 any return 语句。

我建议你改成

void revrsboard(int board1[Row][Column],int board2[Column][Row]);
,表示该函数没有返回值。


0
投票
  1. int
    printb
     的函数调用前面删除类型 
    reversboard
  2. 函数声明中的正确名称从
    initb
    printb
  3. 函数声明返回
    int
    ,因此将
    return 0;
    添加到每个函数的末尾或将返回类型更改为
    void

您最终会得到类似以下内容的编译和运行结果:

#include <stdio.h>
#include <time.h>

#define Row 2
#define Column 3

int printb(int board[2][3]);
int revrsboard(int board1[2][3], int board2[3][2]);

int main() {
  int board1[Row][Column] = {
    {
      1,
      2,
      3
    }, // ο αρχικος πινακας
    {
      4,
      5,
      6
    }
  };

  int board2[Column][Row] = {
    0
  };
  //int  printb(board1); //ektyposh pinaka
  printb(board1); //ektyposh pinaka
  printf("\n");
  //int  revrsboard(board1,board2);  //anastyrofh kai ektyposh
  revrsboard(board1, board2); //anastyrofh kai ektyposh

  return 0;
}

//print 1
int printb(int board[2][3]) {
  int k, l;

  for (k = 0; k < 2; k++) {
    for (l = 0; l < 3; l++) {
      printf("%4d |", board[k][l]);
    }
    printf("\n");
  }
  return 0;
}

// reversing print
int revrsboard(int board1[Row][Column], int board2[Column][Row]) {
  int i = 0, j = 0, k, l;
  for (i = 0; i < Row; i++) {
    for (j = 0; j < Column; j++) {
      board2[j][i] = board1[i][j];
    }
  }

  for (k = 0; k < 3; k++) {
    for (l = 0; l < 2; l++) {
      printf("%4d |", board2[k][l]);
    }
    printf("\n");
  }
  return 0;
}
© www.soinside.com 2019 - 2024. All rights reserved.