【需求分析】
输入 本题有多组数据,每组数据由一个正整数N组成。(N不大于100)
输出 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间不要额外的空行。矩阵【实验题目】
蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。
三角中同一行的数字用一个空格分开。行尾不要多余的空格。
输入范例 5
输出范例 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
【概要设计】
此程序为了实现上述功能,需明白蛇形矩阵的排布及每行数字之间的规律,在此基础上建立合适的for循环语句,所有循环语句可在主函数中直接实现。
【详细设计】
程序运行时,先输出a[0][0],再通过for循环输出第一行所有数字,再以此顺序依次输出每一行的数字,构成蛇形矩阵,其中for循环如下:
while(scanf("%d",&N)!=EOF)
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)
{
a[i+1][0]=a[i][0]+i+1;
for(j=0;j<N-i-1;j++)
{
a[i][j+1]=a[i][j]+j+i+2;
printf(" %d",a[i][j+1]);
}
printf("\n%d",a[i+1][0]);
}
}
【调试分析】
输出语句的具体位置未全部考虑清楚,未得到满意结果,调试后正确输出。
【使用说明】
运行程序环境VS2015
【测试结果】
【附录】
#include<stdio.h>
int main()
{
int N,i,j,a[100][100];
while(scanf("%d",&N)!=EOF)
{
a[0][0]=1;
printf("%d",a[0][0]);
for(i=0;i<N-1;i++)
{
a[i+1][0]=a[i][0]+i+1;
for(j=0;j<N-i-1;j++)
{
a[i][j+1]=a[i][j]+j+i+2;
printf(" %d",a[i][j+1]);
}
printf("\n%d",a[i+1][0]);
}
}
printf("\n");
return 0;
}