/*打印一个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-10-08 21:59:06