题目描述
XP迎来了他大学第一堂期末考试,老师开始安排考场座次,第一列从第一个同学开始从前往后按照学号(学号从1开始递增)升序排列,然后第二列接着第一列最后一个同学的学号从后往前按照学号升序排列,第三列又从第一个同学开始接着第二列的第一个同学的学号从前往后按照学号升序排列,…,依次类推。为了简化问题,我们假设考场有n行n列,你能够帮XP编写一个程序生成考场座次表吗?
输入
单组输入数据
n(n<=20)
输出
一个n行n列的座次表,注意每列的学号要向右对齐,且行末不要有多余的空格
样例输入
4
样例输出
1 8 9 16
2 7 10 15
3 6 11 14
4 5 12 13
#include<stdio.h>
int main()
{
int n,i,j,a[30][30],count=1;
scanf("%d",&n);
i=j=0;
for(j=0;j<n;j++) //循环4次
{
if(i==0||i==-1) //运用i进行判定,实现列间顺序和逆序输出
{
for(i=0;i<n;i++)
a[i][j]=count++;
}
else
{
for(i=n-1;i>=0;i--)
a[i][j]=count++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(j==n-1) printf("%2d\n",a[i][j]);
else printf("%2d ",a[i][j]);
}
}
return 0;
}