正文

数字正方形2008-03-19 23:18:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/zhaoyg/33456.html

分享到:

输出如下图形
3 3 3 3 3
3 2 2 2 3
3 2 1 2 3
3 2 2 2 3
3 3 3 3 3

最笨版:
//任意输入一个数,实现其正方形
#include <stdio.h>
#include <conio.h>
#include <time.h>

int main ()
{ clock_t start, end;
    //while(1)
   // {
 int a=0,n,b;
 int i,j;
 int c[200][200] ;
 int s,h,q;
 
 printf("请输入一个整数\n");
 scanf("%d",&n);
    q=n;
    b=2*n-1;
    start = clock();

 while (n>0)
 {
  for (i=a;i<b;i++)
  {
   for (j=a;j<b;j++)
    c[i][j]=n;
  }
  n--;
  a++;
  b--;
 }


 for (s=0;s<(2*q-1);s++)
 {
  for (h=0;h<(2*q-1);h++)
   printf("%2d",c[s][h]);
   printf("\n");
 }
//}
end = clock();
 printf("\nThe time was: %f\n", (end - start) / CLK_TCK);

 getch();
 return 0;
}

改进版:
/*
说明:
     j列 a b c d e
 i 行 a   3 3 3 3 3
      b      3 2 2 2 3
      c      3 2 1 2 3
      d      3 2 2 2 3
      e      3 3 3 3 3
  在(b,b)时需要将3减1,而此时j<i
  在(b,d)时需要将2加1,而此时j>2*s-i(s为最外圈的数字)
  在c行之前2*s-i表示从右上到中心数字1的位置,而c行之后表示从1到左下的位置
  而当j<i与j>=i都不满足时则表示打印自减后的数如(b,b)(b,c)(b,d)
 
  07.4.16写注释
*/
#include<stdio.h>

int main()
{
    int n,i,j;

    printf("请输入一个数,q to end\n");

    while (scanf("%d",&n)==1)
    {
        int s;  //s为最外圈的数字
        s=n;
        for (i=1;i<=2*s-1;i++)  //控制行
        {
            for (j=1;j<=2*s-1;j++)  //每一列打印的个数
            {
                if (j<i&&i<=s) printf("%2d",n--); 
                //i<=s表示上半部分,j<i表示若成立则自减
                if (j>=i&&j<=2*s-i&&i<=s) printf("%2d",n);
                //此句表示打印中间的那些重复的数字,若j>=i成立输出自减后的数字
                //2*s-i<=s表示在自增以前进行
                if (2*s-i<j&&i<=s) printf("%2d",++n);
                //若2*s-i<j表示进行自增
           
                if (j<2*s-i&& i>s) printf("%2d",n--);
                if (j>=2*s-i&&j<=i&&i>s) printf("%2d",n);
                if (i<j&&i>s) printf("%2d",++n);
             }
             printf("\n");
        }
        printf("请输入一个数,q to end\n");
    }   
   
    
    getchar();
    getchar();
    return 0;
}

阅读(2267) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册