int* Array(int len){
int *arr=NULL;
arr=new int [len];
return arr;
}
int** Reshape(int* vec, int row, int col){
int **a=NULL,k=0;
a=new int *[row];
for(int i=0;i<col;++i){
a[i]=new int [col];
}
for(int i=0;i<row;++i){
for(int j=0;j<col;++j){
a[i][j]=vec[k++];
}
}
return a;
}
void FreeArray(int* vec){
delete[] vec;
}
void FreeMatrix(int** mat, int row){
for(int i=0;i<row;++i){
delete[] mat[i];
}
delete[] mat;
}
第一个函数是创建一个一维数组,第二个是将原来的一维数组变成row×col的矩阵,第三个是delete一维数组,第四个是delete二维数组
题目已给代码
#ifndef FUNCTION_H
#define FUNCTION_H
int* Array(int);
int** Reshape(int*, int, int);
void FreeArray(int*);
void FreeMatrix(int**, int);
#endif
#include "check.h"
// #include <iostream>
#include <stdio.h>
#include "functions.h"
int main() {
int* vec = nullptr;
int len, row, col;
scanf("%d", &len);
vec = Array(len);
for (int i = 0; i < len; ++i) {
scanf("%d", vec + i);
}
int** mat = nullptr;
scanf("%d%d", &row, &col);
mat = Reshape(vec, row, col);
for (int i = 0; i < row; ++i) {
for (int j = 0; j < col; ++j) {
printf("%d%c", mat[i][j], j == col - 1 ? '\n' : ' ');
}
}
FreeArray(vec);
FreeMatrix(mat, row);
return 0;
}
题目测试的时候,输入下面的数据无输出