大概题意为:
第一步:
第二步:
第三步:
第四步 :
这样核心就设计好了,接下来设计剩余的东西
设计题目程序
1.题目要求我们返回一个地址,所以我们创造一个一维数组,它的元素个数为行*列,
然后之封装之前的函数
2.封装之前函数,之前的4步可能会多次使用,所以我们使用while,while的条件是arr数组的内容被放满,假设x为arr元素下标,那就为while(x<col*row)
3.最后返回arr数组的首地址即可
最终代码
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param matrix int整型二维数组
* @param matrixRowLen int matrix数组行数
* @param matrixColLen int* matrix数组列数
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
int * printMatrix(int** matrix, int matrixRowLen, int* matrixColLen, int* returnSize)
{
// write code here
int ret = ((*matrixColLen) * matrixRowLen);
*returnSize = ret;
int* arr = (int*)malloc(ret * sizeof(int));
int i = 0;
int j = 0;
int y = 0;//运行次数
int x = 0;//arr的元素下标
if (ret==0)
return NULL;
while (x < (*matrixColLen) * matrixRowLen)//
{
for (i = y, j = y;j < *matrixColLen - y;j++)//打印顺时针首行(第一步)
{
arr[x++] = matrix[i][j];
}
for (i = y + 1, j=*matrixColLen-y-1;i < matrixRowLen - y - 1;i++)//竖着打印到未打印过的最后一行之前(第二步)
{
arr[x++] = matrix[i][j];
}
for (i= matrixRowLen-y-1,j= *matrixColLen-y-1;j >= y; j--)//打印最后一行所剩元素;(第三步)
{
arr[x++] = matrix[i][j];
}
for (j =y,i= matrixRowLen - y-2; i > y; i--)//竖着往上到首行下面行(第四步)
{
arr[x++] = matrix[i][j];
}
y++;
}
return arr;
}