为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C++
路卡利欧 2016-11-01 13:01:32
#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;
}

查看完整回答
反对 回复 2016-12-26
  • 1 回答
  • 1 关注
  • 1359 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信