这道题是比赛的附加题,据我的老师统计,只有%10的人最对了。(不过看起来挺简单的)
打印方阵
描述
下面这样的方阵很有规律,称为蛇形方阵。例如3*3的:
1 2 3
6 5 4
7 8 9
现在给定边长,输出相应的蛇形方阵。
输入
1个整数n,表示要输出n*n的蛇形方阵,1<=n <=100。
输出
n行,每行n个整数,空格隔开。
输入样例 1
4输出样例 1
1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13提示
输出数无需上面样例输出那样整齐。
来源
信息学在线评测系统 http://192.168.11.214
这一道题是一个正向和负向的逻辑运用,从
123
654
789
里看,它分为3列,第一行是正向数,第二行是负向数,依此类推,一共分为两种情况,就是“奇数”为正向;“偶数”为负向,所以肯定需要用到“for”循环。
首先第一步(略过定义、输入),循环加判断:
//程序名:新的C++程序
//作者:
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int n,m,f=1;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
if(i%2==1)//是否是奇数
{
}
if(i%2==0)//是否是偶数
{
}
}
return 0;
}
然后,在判断里加上输出:
//程序名:新的C++程序
//作者:
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
int n,m,f=1;
int main()
{
cin>>n;
for(int i=1; i<=n; i++)
{
if(i%2==1)
{
for(int j=1; j<=n; j++)
{
cout<<f<<" ";//一定要是f!
f++;//循环数叠加
}
cout<<endl;
}
if(i%2==0)
{
m=f+n-1;//从负向起点开始
for(int j=1; j<=n; j++)
{
cout<<m<<" ";
m--;
}
f+=n;//再次叠加
cout<<endl;
}
}
return 0;
}//重点在判断偶数里!!!
好啦,今天的题就到此结束。好习惯,先理解,再写抄。
———————————————————————————————————————————
麻烦各位点个小红心吧。谢谢。