正文

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

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

分享到:

输出如下图形3 3 3 3 33 2 2 2 33 2 1 2 33 2 2 2 33 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;}

阅读(2315) | 评论(0)


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

评论

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