用C語言輸出蛇形矩陣

大可Yyyyyy發表於2020-10-30

程式設計題: 輸入正整數n(n<30), 輸出1到n蛇形矩陣.

在這裡插入圖片描述

程式碼

#include <stdio.h>
#define N 10
int main(void)
{
	int a[N][N] = { 0 };
	int i, j,fuzhi = 0,flag = 1;
	int M;
	scanf("%d",&M);	//這裡用M代替題中輸入的n
	//迴圈賦值
	for (i = 0; i < N; i++)					//我們可以找一下蛇形矩陣每個數的下標規律
	{										//舉個例子,我們寫一下1-10的下標
		flag *= -1;							//	00
		int m, n;							//	01	10
		if (flag == 1)						//	20	11	02
		{									//	03	12	21	30
			m = 0; n = i;					//找到規律之後程式碼就比較好理解了
		}
		else
		{
			m = i; n = 0;
		}
		for (j = 0; j < i + 1; j++)
		{
			if (fuzhi == M)break;
			if (i + j == 0)
			{
				a[i][j] = ++fuzhi;
				continue;
			}
			else
			{
				if (flag == 1)
				{
					a[m++][n--] = ++fuzhi;
				}
				else
				{
					a[m--][n++] = ++fuzhi;
				}
			}
		}
		if (fuzhi == M)break;
	}
	//輸出二維陣列
	for (i = 0; i < N; i++)
	{
		for (j = 0; j < N; j++)
		{
			if (a[i][j] != 0)
				printf("%4d", a[i][j]);
		}
		putchar(10);
	}
	return 0;
}


相關文章