1. 程式人生 > >s型座位問題

s型座位問題

題目描述
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;
}