Chinaunix首页 | 论坛 | 博客
  • 博客访问: 466399
  • 博文数量: 40
  • 博客积分: 1178
  • 博客等级: 少尉
  • 技术积分: 578
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-28 21:27
文章分类

全部博文(40)

文章存档

2012年(3)

2011年(29)

2010年(7)

2009年(1)

分类: C/C++

2011-02-21 21:49:04

 

  1.          *
  2.         ***
  3.        *****
  4.       *******
  5.      *********
  6.     ***********
  7.    *************
  8.   ***************
  9.  *****************
  10. *******************
  11.  *****************
  12.   ***************
  13.    *************
  14.     ***********
  15.      *********
  16.       *******
  17.        *****
  18.         ***
  19.          *

在网上搜到的代码如下所示:

  1. for(int i=0;i<19;i++)
  2.     {
  3.         int j=0;
  4.         while (j<19)
  5.         {
  6.             if (i<=9)
  7.             {
  8.                 if (j<=9)
  9.                 {
  10.                     if (i+j>=9)
  11.                         printf("*");
  12.                     else
  13.                         printf(" ");
  14.                 }
  15.                 else
  16.                     if (j-i<=9)
  17.                         printf("*");
  18.                     else
  19.                         printf(" ");
  20.             }
  21.             else
  22.             {
  23.                 if (j<=9)
  24.                 {
  25.                     if (i-j<=9)
  26.                         printf("*");
  27.                     else
  28.                         printf(" ");
  29.                 }
  30.                 else
  31.                     if (j+i<=27)
  32.                         printf("*");
  33.                     else
  34.                         printf(" ");
  35.             }
  36.             j++;
  37.         }
  38.         printf("\n");
  39.     }

但是我觉得代码有点多,于是自己写了一个,希望大家提点意见:

  1. #include "stdio.h"
  2. void main()
  3. {
  4.     for (int i=0; i<19; i++)
  5.     {
  6.         int m;//用于保存打印每行左边空格的个数

  7.         int    n;//用于保存打印每行的*符号


  8.         /*等差数列an = 2*i+1(其中0<=i<=9)*/
  9.         /*前10行为递增等差数列,所以左边打印的空格数为从9到0*/
  10.         if (0<=i && i<=9)
  11.         {
  12.             m = 9-i; //从第一行到第十行是首项为9,公差为-1的递减等差数列

  13.             n = 2*i+1;
  14.         }
  15.         else if (9<i && i<19)
  16.         {
  17.             m = i-9;//后9行左边空格为首项为1,公差为1的递增等差数列

  18.             n = 37-2*i;
  19.         }

  20.         while (m-- >0 )
  21.         {
  22.             printf(" ");
  23.         }
  24.         
  25.         while (n-->0)
  26.         {
  27.             printf("*");
  28.         }

  29.         printf("\n");
  30.     }
  31. }
阅读(1952) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~