zoukankan      html  css  js  c++  java
  • 最近找工作的笔试题,很简单

    打印一个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

    #include<stdio.h>

    #include<stdlib.h>

     int main(int argc,char *argv[])

    {

           int i,j,N,k=0;

           char *p;

           char Num;

           char num[10] = {'X', 'Y'};

           p = num;

          

           while ((N < 3) || (N > 20))

           {

                  scanf("%d", &N);

                 

           }

          

           for(i=1;i<=N;i++)

                  for(j=1;j<=N;j++)

                  {

                         if((i==1)||(i==N))

                         {    

                               

                                if(j<N)

                                       printf("%c",*p);

                                if(j==N)

                                       printf("%c ",*p);

                         }

                         if((i==2)||(i==(N-1)))

                         {

                                if((j==1)||(j==N))

                                {

                                       printf("%c",*p);

                                       if(j==N)

                                       printf(" ");

                                }

                                else

                                {

                                       printf("%c",*(p+1));

                                }

                         }

                         if((i>2) && (i<(N-1)))

                         {

                                      

                                if((j==1)||(j==N))

                                       printf("%c",*p);

                                if((j==2)||(j==(N-1)))

                                       printf("%c",*(p+1));

                                if(j==N)

                                       printf(" ");

                                if((j>2) && (j<(N-1)))

                                {

                                       k++;

                                       Num=k+'0'-1;

                                       if((k-1)<10)

                                              printf("%c",Num);

                                       else

                                              printf("%c",Num+7);   //如果用字母表示>10的数,只能到Nmax = 10

                         /*           else

                                              printf("%d",k-1); //如果直接用10进制数显示只需要增加输出打印位宽  */

                                }

                               

                         }  

                  }

    }

    很多问题问题未考虑,望指正!

  • 相关阅读:
    解决Win8设置为快速启动后ubuntu不能访问win下磁盘的方法
    Why Not Specialize Function Templates?
    Build your first web service with PHP, JSON and MySql
    本地开发与linux服务器端的文件传输
    数据库设计中一对多的解决方法.
    C++ 模板练习摘要
    Understanding ASP.NET Validation Techniques
    我的sublime text 个人设置
    Eclipse 快捷键
    数字图像处理
  • 原文地址:https://www.cnblogs.com/XZJHD/p/4908472.html
Copyright © 2011-2022 走看看