分享一道笔试题
2012-09-20 11:01
134 查看
打印一个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
分析:该矩阵是一个原点对称矩阵,只要求出左上角的四分之一矩阵然后通过映射就可以。
具体代码如下:
例子:当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
分析:该矩阵是一个原点对称矩阵,只要求出左上角的四分之一矩阵然后通过映射就可以。
具体代码如下:
#include<iostream> using namespace std; void PrintArray(int n,char (*a)[100]) { int i,j,k,m,x,y; for(i=0;i<=(n-1)/2;i++) { for(j=0;j<=(n-1)/2;j++) { int x,y; x=i-2;y=j-2; if(x==-2||y==-2) { a[i][j]='x'; } else if(x==-1||y==-1) { a[i][j]='y'; } else { if(i<j) { a[i][j]='0'+x; } else { a[i][j]='0'+y; } } } } for(i=0;i<=(n-1)/2;i++) { for(j=(n+1)/2;j<n;j++) { a[i][j]=a[i][n-1-j]; } } for(i=(n+1)/2;i<n;i++) { for(j=0;j<=(n-1)/2;j++) { a[i][j]=a[n-1-i][j]; } } for(i=(n+1)/2;i<n;i++) { for(j=(n+1)/2;j<n;j++) { a[i][j]=a[i][n-1-j]; } } for(i=0;i<n;i++) { for(j=0;j<n;j++) { cout<<a[i][j]<<' '; } cout<<endl; } } int main() { int n,i,j; char a[100][100]; while(cin>>n) { PrintArray(n,a); } }
相关文章推荐
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- 分享一道Kingsoft的笔试题——Kingsoft笔试归来(应聘职位:服务器端开发工程师)
- 一道某高大上互联网公司的笔试题分享
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- 一道某高大上互联网公司的笔试题分享
- 分享一道关于素数的笔试题
- 分享一道笔试题[有n个直线最多可以把一个平面分成多少个部分]
- 【逻辑题】分享一道在UC笔试中遇到的逻辑题
- 分享一道笔试题目--关于static和extern变量的问题
- 上海爱立信笔试题-分享(真的就一道题)
- 分享一道百度笔试程序题
- 分享一道笔试编程题
- 分享一道笔试题目--关于static和extern变量的问题
- 一道c++笔试题
- OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
- 浅析一道多线程笔试题
- 一道超级好的笔试题
- 找工作练手--一道腾讯的笔试题
- 迅雷的一道笔试题解析
- 分享一道关于闭包、bind和this的面试题