C語言實現矩陣順時針打印

1、簡介

給出一個矩陣,順時針打印矩陣的數據

比如

int buf [4][4] = 

{

{1,2,3,4},

{5,6,7,8},

{9,10,11,12},

{13,14,15,16}

};

打印出來的樣式應該爲1、2、3、4、8、12、16、15、14、13、9、5、6、7、11、10這樣的順時針方法

代碼實現的思想是翻滾法,脫衣法。

1、先實現矩陣的逆時針翻轉

2、每次翻轉打印第一行的數據,比如第一次1、2、3、4。第二次8、12、16。第三次15、14、13。

3、每次打印完自己需要的數據,翻轉4次後,就將矩陣不需要的數據去除,脫掉外面一圈的衣服,再翻轉內部的矩陣,重複上面的步驟。

 

2、代碼實現,代碼只實現了外圈翻轉的部分,內圈翻轉還沒實現,希望以後能實現。

#include "stdio.h"

//矩陣的大小
#define LEN 4

char buf[LEN][LEN] = {
 {1,2,3,4},
 {5,6,7,8},
 {9,10,11,12},
 {13,14,15,16}
};

char c[16] = { 0, };

//翻轉外圈
void fanzhuan(buf1)
{
 static char m1 = 0;
 char buftemp[4][4] = { 0, };
 memcpy(buftemp, buf1,16);

 for (int j = 0; j< LEN-1; j ++)
 { 
  printf("%d ", buftemp[0][j]);
 }

 for (int i = 0; i < LEN; i++)
 {
  for (int j = 0; j < LEN; j++)
  {
   buf[LEN-1 - j][i] = buftemp[i][j];
  }
  printf("\n");
 }

 for (int i = 0; i < LEN; i++)
 {
  for (int j = 0; j < LEN; j++)
  {
   printf(" %d   ", buf[i][j]);
  }
  printf("\r\n");
 }

 m1++;
}

int main()

 for (int i = 0; i < 4; i++)
 {
  for (int j = 0; j < 4; j++)
  {
   printf(" %d   ",buf[i][j]);
  }
  printf("\r\n");
 }

 for (int i = 0; i < 4; i++)
 {
  fanzhuan(buf);
 }

 getchar();
 return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章