c++gc2019比赛题——打印方阵

 这道题是比赛的附加题,据我的老师统计,只有%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;
}//重点在判断偶数里!!!

好啦,今天的题就到此结束。好习惯,先理解,再写抄。

———————————————————————————————————————————

麻烦各位点个小红心吧。谢谢。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值