猿问

请教要求输出n阶蛇形矩阵,这段代码哪里出错了?

#include <stdio.h>
int main()
{
	int a[25][25],n,i,j,k=1;
	printf("请输入行数:");
	scanf("%d",&n);
	//上半三角(含对角线)
	for(i=0;i<n;i++);
	{
		for(j=0;j<=i;j++)
		{
			if(i%2==0)
				a[i-j][j]=k;
			else 
				a[j][i-j]=k;
			k++;
		}
	}
	//下半三角
	for(i=n;i<2*n;i++)
	{
		for(j=0;j<=2*n-i;j++)
		{
			if(i%2==0)
				a[i+j][n-j]=k;
			else
				a[n-j][i+j-n+1]=k;
			k++;
		}
	}
		for(i=0;i<n;i++)
	{
			for(j=0;j<n;j++)
			{
					printf("%4d",a[i][j]);
			}	
			printf("\n");	
	}
		return 0;
}

希望输出的结果是(例如n=6):

1    2   6   7  15 16
3    5   8  14 17 26
4    9  13 18 25 27
10 12 19 24 28 33
11 20 23 29 32 34
21 22 30 31 35 36


路卡利欧
浏览 1362回答 1
1回答

0puppy0

#include <iostream>using namespace std;int main(){int **array;int i, j, k, n, x = 1, y = -1, flag = 0;cin >> n;array = new int*[n];for(i = 0; i < n; i++)array[i] = new int[n];for(i = 0, j = 0, k = 0; i < n * n; i++){if(j < 0){j = 0;flag = 1;x = 1;y = -1;}else if(j >= n){if(k < 0)k = 1;elsek += 2;j = n - 1;y = 1;x = -1;}if(k < 0){k = 0;x = -1;y = 1;}else if(k >= n){if(flag)j++;elsej += 2; k = n - 1;x = 1;y = -1;}array[j][k] = i + 1;j += x; //选择行缩进方式k += y; //选择列缩进方式flag = 0;}for(j = 0; j < n; j++){for(k = 0; k < n; k++)cout << array[j][k] << '\t';cout << endl;}return 0;}
随时随地看视频慕课网APP
我要回答