蛇形矩阵
题目描述
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
输入
本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出
对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。
样例输入
5
样例输出
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
int main()///WJHNB
{
int n,i,j;
while(~scanf("%d",&n))///多实例测试
{
int k=0,g=1;///k是为了控制每行,相邻元素之间的递增关系,g为了储存f的值,g赋初值为了获得第一个1
for(i=0;i<n;i++)///控制行数
{
int f=1,a=2;///f为控制输出元素
a=k+a;///这里的a为每行前两个元素之间的递增关系
f=g+k;///控制第一列的递增关系。
g=f;///这里就是为了储存f的值,防止被初始化,控制第一列元素之间的递增关系
k++;///每行相邻元素递增
for(j=0;j<n-i;j++)///控制每行的元素列数
{
printf("%d ",f);
f=f+a;
a++;
}
printf("\n");///换行
}
}
}
///n为每组数据的行数和列数
///i为行数控制
///j为列数控制
///f为输出变量
///a,k为控制每行相邻元素的必要组成部分
///g为控制第一列相邻元素递增关系
运行结果如下:
可能做法较为复杂。尽量注释明白。欢迎指正,共同进步!!!