Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21104
  • 博文数量: 12
  • 博客积分: 288
  • 博客等级: 二等列兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2012-05-04 18:52
文章分类

全部博文(12)

文章存档

2012年(12)

我的朋友

分类: C/C++

2012-05-05 16:19:29

一、题目

 

扑克牌中有四种花色:黑桃、红桃、梅花和方块。对于花色的象征意义,不同国家的人有不同的看法。

法国人将4种花色理解为矛、红心、丁香叶和方形

德国人将4种花色理解为树叶、红心、橡树果和铃铛

瑞士人将4种花色理解为橡树果、花朵、盾牌和铃铛

英国人将4种花色理解为铲子、红心、钻石和三叶草

意大利人将4种花色理解为宝剑、酒杯、拐杖和硬币

都是神马,呼呼……

今天,我们的任务是打印大小为N的方块。

输入

只有一个奇数N,表示要打印大小为N的方块。(5<=N<=99

输出

输出大小为N的方块,方块部分用#表示,其余部分用*表示。

输入示例

7

输出示例

*******

***#***

**###**

*#####*

**###**

***#***

*******

 

二、分析

1.最上和最下行个数均为所输入数值数;

2.从第二行开始从最中间开始出现#,数量呈奇数递增,每行*前后各减少1个,直到*变为1个,此时#数量达到最大。

3.之后过程与第2步完全相反

 


 

点击(此处)折叠或打开

  1. #include <stdio.h>
  2. int main ()
  3. {
  4.     int n,i,j,k,temp;
  5.     scanf("%d",&n);
  6.     temp=(n-1)/2; //每侧*的最大数量
  7.     for (i=1;i<=n;i++) //令第一行全部为*
  8.         printf("*");
  9.     printf("\n");
  10.     for (i=0;i<n-2;i++) //通过循环完成中间部分
  11.     {
  12.         for (j=0;j<temp;j++) //前部*
  13.             printf("*");
  14.         for (k=n-temp*2;k>0;k--) //*之后是#
  15.             printf("#");
  16.         for (j=0;j<temp;j++) //后部*
  17.             printf("*");
  18.         printf("\n");
  19.         if (i<(n-2)/2) //改变*的数量,待下次循环使用
  20.             temp--;
  21.         else temp++;
  22.     }
  23.     for (i=1;i<=n;i++) //后部*
  24.         printf("*");
  25.     return 0;
  26. }


 

阅读(345) | 评论(0) | 转发(0) |
0

上一篇:1000 孔融让梨

下一篇:1000 孔融让梨

给主人留下些什么吧!~~