#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 163    5   8  14 17 264    9  13 18 25 2710 12 19 24 28 3311 20 23 29 32 3421 22 30 31 35 36
                    
                    
                1 回答
                            0puppy0
                            
                                
                            
                        
                        
                                                
                    TA贡献24条经验 获得超7个赞
#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;
else
k += 2;
j = n - 1;
y = 1;
x = -1;
}
if(k < 0)
{
k = 0;
x = -1;
y = 1;
}
else if(k >= n)
{
if(flag)
j++;
else
j += 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;
}
- 1 回答
 - 1 关注
 - 1412 浏览
 
添加回答
举报
0/150
	提交
		取消
	