Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538922
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-02 16:09:57

打印出如下图案:
   看到这个图形后,我们可以看出,主要是要把星号打印出来。由于这个图形从上到下,星号先递增,然后递减,因此我们可以把它拆成上,下两部分对待。
   我们可以看出上半部分星号是在递加,而左侧的空格是在递减。如果我们把空格补齐,我们会发现第0行需要3个空格,一个星;第1行需要两个空格需要三个星;第2行需要一个空格,需要五个星;第3行需要零个空格,七个星。下面的也可以推出。我们可以很快推出一个表达式。即可将这个图形输出。代码如下:
 

#include <stdio.h>

void print2space();
void printstar();
int main(int argc, int *argv[])
{
     int i,j,k;
     for (i = 0; i < 4; i++)
     {
         for (j = 0; j < 3 -i; j++)
         {
             print2space();
         }
         
         for (k = 0; k < i * 2 + 1; k++)
         {
             printstar();
         }
         printf("\n");
     }
     
     for (i = 3; i > 0 ;i--)
     {
         for (j = 0; j < 4 - i; j++)
         {
             print2space();
         }
         
         for (k = 0; k < 2 * i - 1 ;k++)
         {
             printstar();
         }
         printf("\n");
         
     }
     system("pause");
     return 0;
}

void print2space()
{
     putchar(' ');
     putchar(' ');
}

void printstar()
{
     putchar('*');
     putchar(' ');
}


阅读(3907) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~