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

输入格式:

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

输出格式:

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

输入样例:

7

输出样例:


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

#include <stdio.h>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开始,这里需要注意的地方是每一行图形的数量是依次减少的,空格的数量是依次增加的,同样找出图形的规律,用循环的嵌套将此图形实现。

二 、习题延申

上面打印的图形,每两个 * 号之间有一个空格,且写的代码用了两个循环的嵌套,针对此类题目做一个优化,接下来写的代码,和此题目类似,区别是用一个循环的嵌套来输出图形。此代码输出的图形每两个*号之间没有空格,只要找准(*)星号,空格,n之间的关系,解决此类题目的方法都一样。

#include <stdio.h>
#include<math.h>
int main()
{int n,i,j,k;scanf("%d",&n);k=(n+1)/2;for(i=1;i<=n;i++){    //打印行for(j=1;j<=abs((n+1)/2-i);j++){  printf(" ");       //打印空格}for(j=1;j<=n-abs((k-i))*2;j++){printf("*");      //打印*}printf("\n");       //换行}return 0;
}

1、abs()函数:绝对值函数;

2、以n=9为例,给出下列解题思路。

三、

打印空的菱形,空菱形的特点是只有第一个和最后一个位置上需要打印*,其余打印空格。

#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main()
{int n,i,j,k;scanf("%d",&n);k=(n+1)/2;for(i=1;i<=n;i++){    //打印行for(j=1;j<=abs((n+1)/2-i);j++){  printf(" ");       //打印空格}for(j=1;j<=n-abs((k-i))*2;j++){if(j==1||j==n-abs((k-i))*2){printf("*");      //打印*}else{printf(" ");   //打印*号中间的空格}}printf("\n");       //换行}return 0;
}

习题4-9 打印菱形图案(15分)相关推荐

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

    习题4-9 打印菱形图案 (15 分) 本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号& ...

  2. PTA 7-26 打印菱形图案 (15分)模拟

    本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号"*"组成的菱形,如样 ...

  3. 7-59 打印菱形图案 (15 分)

    本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号"*"组成的菱形,如样 ...

  4. php编辑菱形图案代码,打印菱形图案 (15 分)

    打印菱形图案 (15 分) 本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号"* ...

  5. PTA 7-12 打印菱形图案

    7-12 打印菱形图案 (15分) 本题要求编写程序,打印一个高度为n的.由"*"组成的正菱形图案. 输入格式: 输入在一行中给出一个正的奇数n. 输出格式: 输出由n行星号&qu ...

  6. 实验1-5 输出菱形图案 (5 分)

    实验1-5 输出菱形图案 (5 分) 本题要求编写程序,输出指定的由"A"组成的菱形图案. 输入格式: 本题无输入 输出格式: 按照下列格式输出由"A"组成的菱 ...

  7. 打印菱形图案(C语言实现)

    习题4-9 打印菱形图案(C语言实现) 分析:分上下两个三角形打印 #include <stdio.h>int main() {int n,i,j,k;scanf("%d&quo ...

  8. java打印菱形图案_java打印出菱形图案实例详解

    第一步:首先对图像进行解析 想要打印该图形必须要进行多层循环嵌套,分两个部分进行打印. 第一部分为上半部分前四行,他们是递增的关系,后半部分后三行为递减关系,由此可以得出我们需要写两个打的循环.并且由 ...

  9. 习题4-7 最大公约数和最小公倍数 (15分)

    习题4-7 最大公约数和最小公倍数 (15分) 题目描述 本题要求两个给定正整数的最大公约数和最小公倍数. 输入格式: 输入在一行中给出两个正整数M和N(≤1000). 输出格式: 在一行中顺序输出M ...

  10. 花式打印菱形图案!!

    (一).首先我们先来看最简单的打印5行5列 ***** ***** ***** ***** ***** 具体代码如下: /*** 双循环打印菱形图案* * A ** *** BBB * ** **** ...

最新文章

  1. 难点电路详解之负反馈放大器电路(1)
  2. python 行为驱动_什么是行为驱动的Python?
  3. 湖畔大学最新学员名单公布:胡彦斌以纽班文化董事长身份被录取
  4. python线程安全吗_线程安全及Python中的GIL
  5. Docker 基础技术之 Linux namespace 详解
  6. 想去机器学习初创公司做数据科学家?这些问题值得你三思!
  7. Ubuntu zip压缩文件夹 和解压文件
  8. Eclipse用SVN上传新项目
  9. DIY01_NE555叮咚门铃
  10. java 重写或者覆父类方法的使用throws 抛出异常,为什么要小于父类父类,java面试点
  11. win10计算机删除了怎么恢复,win10文件误删除怎么恢复-互盾数据恢复软件
  12. 计算机一直重启故障原因可能是,Windows电脑一直自动重启的原因和解决方法
  13. 大学生用什么样的笔记本电脑好
  14. 敲开bp神经网络之门(三,机器视觉斑点blob匹配中使用)
  15. 幸福人生心得体会之如何得到好婚姻好事业
  16. 【技术贴】禁止打印进程spoolsv - spoolsv.exe随机启动
  17. 02前端入门HTML5 +CSS3+电商网页制作:CSS
  18. 数字图像处理 使用opencv+python识别七段数码显示器的数字
  19. 【经验】研究方向要专一,日常积累素材和案例
  20. linux驱动篇-LCD

热门文章

  1. matlab仿真电磁波的产生,电磁场与电磁波Matlab仿真
  2. 三种求平方根的算法——C/C++
  3. 苹果授权登录绑定手机号被拒绝
  4. Mac安装Java反编译工具JD-GUI(解决打不开问题)
  5. 继续安利两个漫画App
  6. 如何在PCB中放置禁止触摸标志
  7. 【C++】用代码写一个气派的圣诞树发给身边的亲朋好友
  8. R或RStudio下载包时出错解决方案
  9. android如何使用ios14组件,iOS14如何添加和删除小组件 iOS14添加和删除小组件的方法...
  10. php 文章页面阅读全文,给WordPress文章内容页增加阅读全文展开功能