急,C语言新手数组一维转二维,求前辈解

0

题目是这样的:

实现一个如下函数

char getValueFromArray(char arr[], int x,int y);

其中arr 为一个一维数组,使用getValueFromArray 将一个一维数组当成一个二维数组使用。

提示1: 

以下是一个x最大长度 5,y最大值为 5 的二维数组arr1

y = 0 : 0  1  2  3  4
y = 1 : 5  6  7  8  9
y = 2 : 10 11 12 13 14
y = 3 : 15 16 17 18 19
y = 4 : 20 21 22 23 24

以下是一个长度为25的一维数组 arr2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

arr1[1][3] = 8

arr2[8] = 8   // arr2的下标8 = 1 * 5(二维数组中x的最大值) + 3

我写的代码是这样的

#include <stdio.h>

char getValueFromArray(char arr[], int x,int y)
{
	int i,j,point = 0;
	for( i=0; i < 5; i++)
		for(j=0; j < 5; j++)
			arr[point++]=point;
}

// 将一维数组转化为二维数组
void ewsz(int arr2[],int arr1[][5])
{
	int i,j,point = 0;
	for( i=0; i < 5; i++)
		for(j=0; j < 5; j++)
			arr1[i][j]=arr2[point++];
}

void print(int arr1[][5])
{
	int i, j, temp;
	for( i = 0; i < 5; i++)
	{
		for(j = 0; j < 5; j++)
			printf("%d\t", arr1[i][j]);
		printf("\n");
	}
}

int main()
{
	int arr1[5][5];
	char arr2[25];
	getValueFromArray(arr2, 0, 0);
	ewsz(arr2,arr1);
	print(arr1);
	return 0;
}

出错了但是不知道哪里错了

31 16 C:\Users\Mac\Desktop\C\2.cpp [Error] cannot convert 'char*' to 'int*' for argument '1' to 'void ewsz(int*, int (*)[5])'
ava
魔教中人

2020-1-7

1

1. 题目要求“将一个一维数组当成一个二维数组使用”,并没有要求你转换一维数组为二维数组。

2. 注意,这里的一维数组和二维数组需要同类型的数据。而你,分别用了 char 和 int,自然会出错。

ava
慢羊羊

2020-1-7

那要怎么做呢,原来并没有接触过这种类型的题目! -  魔教中人  2020-1-7
技术讨论社区