- /**
- * 编写一个函数,使给定的数组排列翻转
- */
- #include <stdio.h>
- void rebuilt(int *p);
- int main()
- {
- //给定一个数组
- int shuzu[5][5] ={
- {1,2,3,4,5},
- {6,7,8,9,10},
- {11,12,13,14,15},
- {16,17,18,19,20},
- {21,22,23,24,25}
- };
- //展示数组初始排列
- printf("初始数组是:\n");
- for (int i =0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++) {
- printf("%-5d ",shuzu[i][j]);
- }
- printf("\n");
- }
- //调用重组数列的函数
- //
- rebuilt(*shuzu);
- //展示重组后的数组排列
- printf("重排列后数组是:\n");
- for (int i =0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++) {
- printf("%-5d ",shuzu[i][j]);
- }
- printf("\n");
- }
-
- return 0;
- }
- void rebuilt(int *p)
- { //新建一个备份数组
- int shuzuBeifen[5][5];
- int k =0;
- //将目标数组的值 赋值给 备份数组
- for (int i =0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- shuzuBeifen[i][j] = *(p+k++);
- }
-
- }
- //初始化 k的值 也可定义一个新的变量例如 int l = 0;
- k = 0;
- //将备份数组的列的值传递给目标数组的行
- for (int i = 0; i < 5; i++)
- {
- for (int j = 0; j < 5; j++)
- {
- *(p+(k++)) = shuzuBeifen[j][i];
- }
-
- }
-
- }
复制代码 |
|