栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

习题4-9 打印菱形图案(15分)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

习题4-9 打印菱形图案(15分)

本题要求编写程序,打印一个高度为n的、由 “*” 组成的正菱形图案。

输入格式:

输入在一行中给出一个正的奇数n。

输出格式:

 输出由n行星号 “*” 组成的菱形,如样例所示。每个星号后跟一个空格。

输入样例:

7

输出样例:

       * 
    * * * 
  * * * * * 
* * * * * * * 
  * * * * * 
    * * * 
      * 

#include 

int main()
{
    int i,j,n;
    scanf("%d",&n);
    int k=(n+1)/2;
    for(i=1;i<=k;i++){
        for(j=1;j<=n-2*i+1;j++){
            printf(" ");
        }
        for(j=1;j<=2*i-1;j++){
            printf("* ");
        }
        printf("n");
    }
    for(i=n-k;i>=1;i--){
        for(j=1;j<=n-2*i+1;j++){
            printf(" ");
        }
        for(j=1;j<=2*i-1;j++){
            printf("* ");
        }
        printf("n");
    }
    
    return 0;
}
 题目解析:
  1. 看到此题目,要想到用循环的嵌套来解决此问题;
  2. 嵌套的循环可以构成一个平面图案,用 i 控制行, j 控制列;
  3. 用一个外循环来打印行,此题目需要我们打印一个菱形图案,可以将图案分为上下两个部分,并对上下两个部分的图行进行仔细分析,找出一行中空格和 * 号的数量规律。
  4. 以输出的样例为题目,总共由7行,先分析第一行到第四行的规律:第一行:6个空格,一个* ;6=7-(2*1-1) 。第二行:4个空格,3个* ;4=7-(2*2-1)  。第三行:2个空格,5个* ;2=7-(2*3-1) 。 第四行:0个空格,7个* ; 0=7-(2*4-1) 。因此,可以找出列号(j)和行号(i)、空格之间的关系:j<=n-2*i+1;  列号(j)和行号(i)、* 号之间的关系:j<=2*i-1。
     for(i=1;i<=k;i++){                  //打印行
            for(j=1;j<=n-2*i+1;j++){             //打印空格
                printf(" ");
            }
            for(j=1;j<=2*i-1;j++){        //打印*和空格
                printf("* ");
            }
            printf("n");               //换行
        }
  5. 分析图形的下半部分,第5行到第六行,可以再用一个for循环来控制,外循环的i从     n-(n+1)/2开始,这里需要注意的地方是每一行图形的数量是依次减少的,空格的数量是依次增加的,同样找出图形的规律,用循环的嵌套将此图形实现。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/312092.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号