打印一个N*N的方阵,从最外层到最里层每层一个字符

/*打印一个N*N的方阵,N为每边字符的个数( 3〈N〈20 ),要求最外层为“X”,第二层为“Y”,从第三层起每层依次打印数字0,1,2,3,... 例子:当N =5,打印出下面的图形: X X X X X X Y Y Y X X Y 0 Y X X Y Y Y X X X X X X */

 1 // TESTC.cpp : 定义控制台应用程序的入口点。
 2 //
 3
 4 #include "stdafx.h"
 5 #include <string>//当要使用string类是要引用的文件
 6 #include <iostream>
 7 #include <stdio.h>
 8
 9 using namespace std;  //c++工程时,此语句必不可少,否则有的编译器无法识别
10
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13     int n=25;
14     int i=0,j=0,k=0;
15
16        while(1)
17     {
18         cin>>n;
19
20         char **p;
21         p=new char*[n];
22
23         for(i=0;i<n;i++)
24             p[i]=new char[n];
25
26         for(int k=n/2+n%2-1;k>=0;k--)//从零开始的话会被覆盖掉,必须反着来
27         for(int i=0;i<n;i++)
28         {
29             for(int j=0;j<n;j++)
30             {
31                 if(k==0&&(i==k||j==k||i==n-k-1||j==n-k-1))p[i][j]=‘x‘;
32                 else if(k==1&&(i==k||j==k||i==n-k-1||j==n-k-1))p[i][j]=‘y‘;
33                 else if(i==k||j==k||i==n-k-1||j==n-k-1) p[i][j]=k-2+‘0‘;
34             }
35
36         }
37         for(int i=0;i<n;i++)
38         {
39             for(int j=0;j<n;j++)
40             {
41
42                 printf("%c ",p[i][j]);
43             }
44             printf("\n");
45         }
46     }
47
48     return 0;
49 }
时间: 2024-07-29 11:52:28

打印一个N*N的方阵,从最外层到最里层每层一个字符的相关文章

java 数据结构 图中使用的一些常用算法 图的存储结构 邻接矩阵:图的邻接矩阵存储方式是用两个数组来标示图。一个一位数组存储图顶点的信息,一个二维数组(称为邻接矩阵)存储图中边或者弧的信息。 设图G有n个顶点,则邻接矩阵是一个n*n的方阵,定义为: 实例如下,左图是一个无向图。右图是邻接矩阵表示:

以下内容主要来自大话数据结构之中,部分内容参考互联网中其他前辈的博客. 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通过表示为G(V,E),其中,G标示一个图,V是图G中顶点的集合,E是图G中边的集合. 无边图:若顶点Vi到Vj之间的边没有方向,则称这条边为无项边(Edge),用序偶对(Vi,Vj)标示. 对于下图无向图G1来说,G1=(V1, {E1}),其中顶点集合V1={A,B,C,D}:边集合E1={(A,B),(B,C),(C,D),(D,A),(A,C)}: 有向图:若

生成一个n*n的方阵,然后输出此方阵对角线上元素之和

//输入一个正整数n(1<n<10),根据以下公式生成一个n*n的方阵,然后输出此方阵对角线上元素之和 //公式为a[i][j]=i*n+j+1 (0=<i<n,0=<j<n) 源代码: #include<stdio.h> #include<stdlib.h> #define N 10 //输入一个正整数n(1<n<10),根据以下公式生成一个n*n的方阵,然后输出此方阵对角线上元素之和 //公式为a[i][j]=i*n+j+1 (0

淘宝笔试题:一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点;如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL

题目:对于一颗完全二叉树,要求给所有节点加上一个pNext指针,指向同一层的相邻节点:如果当前节点已经是该层的最后一个节点,则将pNext指针指向NULL:给出程序实现,并分析时间复杂度和空间复杂度. 运用队列,按层遍历,每次遍历一层时,添加新指针,由于每个节点只需要进队一次出队一次,时间复杂度为O(n),空间复杂度为O(n),具体代码如下: #include<iostream> #include<vector> #include<queue> using namesp

写一个循环,不断的问客户想买什么 ,当用户选择一个商品编号,就把对应的商品加入购物车 ,最终用户输入q退出时,答应购物车的商品

写一个循环,不断的问客户想买什么 ,当用户选择一个商品编号,就把对应的商品加入购物车 ,最终用户输入q退出时,答应购物车的商品products=[["Iphone8",68888],["MacpPro",14800],["Coffee",31],["小米",2499],["Book",80],["Nlke",799]]shopping_cart=[]print(".....商品

假定CSomething是一个类,执行下面这些语句之后,内存里创建了____个CSomething对象。

CSomething a(); CSomething b(2); CSomething c[3]; CSomething &ra = b; CSomething d=b; CSomething *pA = c; CSomething *p = new CSomething(4); CSomething a():// 没有创建对象,这里不是使用默认构造函数,而是定义了一个函数,在C++ Primer393页中有说明. CSomething b(2);//使用一个参数的构造函数,创建了一个对象. C

【解答】一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待。

阿里2015年实习生题目: 一个电动模型,每一组电池能让其行驶8分钟,一个充电器能同时给两组电池充电,一组充满需要15分钟,至少准备(?)组电池,(?)个充电器,可以让模型每次行驶完可以立即换电池行驶不用等待. 分析过程如下: 答案:至少3组电池,1组充电器可以立即换电池行驶不用等待.

页面table的每行都有一个&lt;input type=&#39;button&#39; /&gt;,如何实现点击按钮在按钮下方弹出一个div,点击空白消失

\ <input id="test" type="button" />/*按钮*/ <div id="tanchu"></div> <script language="javascript"> $(document).ready(function(e) { $("#test").click(function(e) { $("#tanchu"

一个表中的某字段中所有的数据,复制到另一个表中

项目要求,织梦被黑了,又不太会修复织梦的漏洞.决定换一个自己开发的后台吧!问题来了,织梦中的文章数据要全部拿出来,导入到新的后台中. 因为,现有后台的数据表跟织梦的表的结构完全不一样,再加上织梦用于保存文章是用了,dede_addonarticle,dede_archives,这两个表.现在是要将两个表中有用的字段的数据 复制到一个新的表中的一个字段内. 第一步,同步他们的主键,dede_addonarticle的主键是aid,dede_archives的主键是id 1,一张写好了结构的,没有数

判断一个字符串里是否含有某段字符?怎么截取一段字符?

写前端过程中遇到的最多的字符串操作莫过于 :判断一个字符串里是否含有某段字符 ,和 截取一段字符串. 字符串操作有很多方法,其实一般只要掌握以上两个就够用了,其他方法随他去吧,好,下面就以上两个方法讲解一下. 1.判断一个字符串是否含有某段字符,使用indexOf()方法: str.indexOf("参数1","参数2");参数1表示判断是否包含的小字符串, 参数2表示从左到有依次判断的起始位置,默认从0开始,str表示用于寻找的原字符串,ps:如果原字符串含多个判