A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. /**
  2. *  编写一个函数,使给定的数组排列翻转
  3. */

  4. #include <stdio.h>
  5. void rebuilt(int *p);
  6. int main()
  7. {
  8.     //给定一个数组
  9.     int shuzu[5][5] ={
  10.         {1,2,3,4,5},
  11.         {6,7,8,9,10},
  12.         {11,12,13,14,15},
  13.         {16,17,18,19,20},
  14.         {21,22,23,24,25}
  15.     };
  16.     //展示数组初始排列
  17.     printf("初始数组是:\n");
  18.     for (int i =0; i < 5; i++)
  19.     {
  20.         for (int j = 0; j < 5; j++) {
  21.             printf("%-5d  ",shuzu[i][j]);
  22.         }
  23.         printf("\n");
  24.     }
  25.     //调用重组数列的函数
  26.     //
  27.     rebuilt(*shuzu);
  28.     //展示重组后的数组排列
  29.     printf("重排列后数组是:\n");
  30.     for (int i =0; i < 5; i++)
  31.     {
  32.         for (int j = 0; j < 5; j++) {
  33.             printf("%-5d  ",shuzu[i][j]);
  34.         }
  35.         printf("\n");
  36.     }

  37.    
  38.     return 0;
  39. }

  40. void rebuilt(int *p)
  41. {   //新建一个备份数组
  42.     int shuzuBeifen[5][5];
  43.     int k =0;
  44.     //将目标数组的值 赋值给 备份数组
  45.     for (int i =0; i < 5; i++)
  46.     {   
  47.         for (int j = 0; j < 5; j++)
  48.         {
  49.             shuzuBeifen[i][j] = *(p+k++);
  50.         }
  51.         
  52.     }
  53.     //初始化 k的值   也可定义一个新的变量例如 int l = 0;
  54.     k = 0;
  55.     //将备份数组的列的值传递给目标数组的行
  56.     for (int i = 0; i < 5; i++)
  57.     {
  58.         for (int j = 0; j < 5; j++)
  59.         {
  60.              *(p+(k++)) = shuzuBeifen[j][i];
  61.         }
  62.         
  63.     }

  64.    
  65. }
复制代码

1 个回复

倒序浏览
方法不错嘛
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马