c實現輸出二維蛇形矩陣

來源:互聯網
上載者:User

直接上代碼:

#include <malloc.h>#include <stdio.h>int main(void){//使用者輸入的值,建立n*n的矩陣int n;//蛇形從1開始計數int count = 1;//a[x][y],x是二維數組的第一個下標,y是第二個。//round是蛇形矩陣的第幾圈,從0開始。int x,y,round;scanf("%d",&n);int (*a)[n] = calloc(n*n,sizeof(int));//如果n是1,則直接輸出。if(n == 1){a[0][0] = count;}else{//下面以n=5為例//一共有2(5/2)圈蛇形for(round=0; round<n/2; round++){/* 以下迴圈執行後輸出如下:1 2 3 4 5*/x = round;for(y=round;y<n-round;y++){a[x][y]=count;count++;}/* 以下迴圈執行後輸出如下:1 2 3 4 5678*/y = n - round - 1;for(x=round+1;x<n-round-1;x++){a[x][y]=count;count++;}/* 以下迴圈執行後輸出如下:1  2  3  4  567813 12 11 109*/x = n - round - 1;for(y=n-round-1;y>=round;y--){a[x][y]=count;count++;}/* 以下迴圈執行後輸出如下:1  2  3  4  516615714813 12 11 10 9*/y = round;for(x=n-round-1-1;x>round;x--){a[x][y]=count;count++;}}/* 上面的大迴圈執行後輸出如下:1  2  3  4  516 17 18 19 615 24 20 714 23 22 21 813 12 11 10 9*/if(n%2 == 1){//如果n值奇數,將最中間的空填上a[n/2][n/2] = count;}}//列印矩陣for(x=0;x<n;x++){for(y=0;y<n;y++){printf("%d ",a[x][y]);}printf("\n");}printf("\n");free(a);return 0;}

執行結果如下:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.