前言

经过一学期的学习,C语言算是入门了。这个寒假准备花点时间把主要知识点和题目理一下。本篇文章主要讲解如何用C语言实现星形图里的菱形的打印。


一、何为星形图

顾名思义,即用 * 与空格所组成的各种图形,解题的主要突破口是“找规律”,即找到行与列的关系;第二个关键点就是学会用循环打空格,使得图形美观。

二、经典题型

1.七层菱形图

本题要求打印一个层数为7的菱形图,第一行1列,第二行3列,第三行5列,第四行7列,第五行5列,第六行3列,第七行1列。我的思路是分为两半来打印:先打1,2,3,4层的图形,再接着打5,6,7层。分别用两层循环i,j控制行与列。k的循环控制与调整打出空格的多少,使图形美观。

#include"stdio.h"
int main()
{int i,j,k;for(i=0;i<4;i++)//上半层打印 {for(k=0;k<17-i;k++)//k控制打空格 ,先循环递减打空格 printf("  ");//每次循环打出两个空格 for(j=0;j<2*i+1;j++)//观察发现,每一行的列数是2*i+1 printf("* ");//每次打出一个*和一个空格 printf("\n");//内循环结束,即每行打印结束换行 }for(i=2;i>=0;i--)//下半层打印 {for(k=0;k<17-i;k++)//逐级递增打空格 printf("  ");for(j=0;j<2*i+1;j++)printf("* ");printf("\n");}printf("图形打印完毕!\n");return 0;
} ![调试结果](https://img-blog.csdnimg.cn/20210118125336143.png)

2.打印n层菱形图

解题思路同上,根据上例打印7层菱形这一特例,从中发现一般规律,总结层数为n的代码更具一般性。体现了由特殊到一般的思想。

#include"stdio.h"
int main()
{int i,j,k,n;printf("请输入所要打印菱形的层数:\n");scanf("%d",&n);for(i=0;i<(n+1)/2;i++){for(k=0;k<17-i;k++)printf("  ");for(j=0;j<2*i+1;j++)printf("* ");printf("\n");}for(i=(n-1)/2-1;i>=0;i--){for(k=0;k<17-i;k++)printf("  ");for(j=0;j<2*i+1;j++)printf("* ");printf("\n");}printf("图形打印完毕!\n");return 0;
}
![调试结果](https://img-blog.csdnimg.cn/20210118123930936.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzUyNDg3MDY2,size_16,color_FFFFFF,t_70#pic_center)# 总结
打印星形图这类题型。主要考察是否熟练使用循环的嵌套,而不是自作聪明的用一连串的printf。
本篇文章从菱形为例出发,从特殊到一般。其它各种图形(只要不是特别复杂的)万变不离其宗。
解题技巧主要是:观察图形规律,找到行与列的关系,控制内层循环的打印,以及空格的打印也是很重要的。
因为它决定了你所打印出来的图形是否美观好看而不紧凑。( 以上就是对打印菱形图的详解,大佬可以路过。希望给小白带来帮助。
第一次写博客,后续更新。
求关注,并留下你的赞哈。)

C语言之打印菱形图详解相关推荐

  1. puts和fputs函数及其区别,C语言puts和fputs函数详解

    puts和fputs函数及其区别,C语言puts和fputs函数详解 与 gets 函数一样,对于 puts 函数,同样建议使用 fputs 函数来代替 puts 函数.如下面的示例代码所示: int ...

  2. java uml类图教程_Java利器之UML类图详解

    原标题:Java利器之UML类图详解 (点击上方公众号,可快速关注) 来源:伯乐在线专栏作者- Code4Android 如需转载,发送「转载」二字查看说明 前言 UML(Unified Modeli ...

  3. 36 张图详解应用层协议:网络世界的最强王者

    上帝视角 应用层 我们前面介绍过 TCP/IP 模型的下三层,分别是网络接入层.网络层和传输层.它们都是为应用层服务的,传输应用层的各种数据,现在我们就来看看最高层的应用层. 应用层 在 TCP/IP ...

  4. php打印出函数的内容吗,PHP打印函数集合详解以及PHP打印函数对比详解(精)

    1 echo();2 print();3 die();4 printf();5 sprintf();6 print_r();7 var_dump(); 1 echo() 可以同时输出多个字符串,可以多 ...

  5. 大二c语言期末考试题库及详解答案,大学C语言期末考试练习题(带详解答案)...

    <大学C语言期末考试练习题(带详解答案)>由会员分享,可在线阅读,更多相关<大学C语言期末考试练习题(带详解答案)(55页珍藏版)>请在金锄头文库上搜索. 1.一. 单项选择题 ...

  6. Go 语言 bytes.Buffer 源码详解之1

    转载地址:Go 语言 bytes.Buffer 源码详解之1 - lifelmy的博客 前言 前面一篇文章 Go语言 strings.Reader 源码详解,我们对 strings 包中的 Reade ...

  7. Java基础【之】输出一个菱形(详解)

    Java基础[之]输出一个菱形(详解) 代码示例 <目录:Java渐进式学习> <目录:Java设计模式> <目录:从零手写Tomcat> 代码示例 public ...

  8. sip 时序图_SPI总线协议及SPI时序图详解

    一.SPI总线介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根 ...

  9. (动图详解)汇编视角观察函数栈帧的创建和销毁

    目录 ​1.阅读本文的价值 ​2.函数栈帧及栈的概念 ​3.部分寄存器及汇编指令 ​4.main函数的调用 5.main函数的栈帧创建 ​6.变量的栈帧创建 ​6.函数传参 ​7.函数内部运算及销毁 ...

最新文章

  1. linux进程间通信:FIFO应用 /var/log/ 系统日志的模拟实现
  2. 发生系统错误 5 拒绝访问
  3. springboot图书管理怎么实现借书时间到期提醒_智能机器人充当图书管理员,看看它能干嘛...
  4. abv asp是静态网页吗_2019年seo动态网页优化“指南针”
  5. 串口数据波形显示_【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传可飙到500KB/S...
  6. C++ virtual 析构函数
  7. 如何调整HOOK的跳转指令
  8. html5 sqlite存储图片,HTML5之Sqlite
  9. 史上最全数据库中间件详解
  10. android的辅助代码,跟App相关的Android辅助类
  11. Gauss-Jordan法求逆矩阵
  12. 小学计算机应用到英语课教案,人教版小学英语三年级上册unit one hello!文具单词教学信息技术应用成果(教学设计方案).doc...
  13. icp光谱仪的工作原理_ICP原理
  14. Transmission 下载列表、下载文件 迁移机器指南
  15. python中计算ln和lg的方法
  16. 线程插队--Join方法
  17. java类与对象实验报告心得体会_java实习实训报告心得【三篇】
  18. 华政全国计算机一级毕业,离校不离线 | 铛铛铛!毕业大佬返校宣讲会!
  19. 流利说 Level 5 全文
  20. 分布式数据库查询机制

热门文章

  1. 微信互联网推广经验7+1
  2. 华为鸿蒙系统吃鸡,华为鸿蒙OS 2.0性能简测:极致画质下的吃鸡王者更胜 EMUI 11,且功耗还低...
  3. cocos 禁掉快速点击_使用Airtest超快速开发App爬虫
  4. OSChina 周六乱弹 —— 科学面对神话
  5. Android开发工具篇:华为手机root
  6. Android百度地图导航的那些坑
  7. 什么是RFC、IETF
  8. 【深度学习推荐系统-王喆】笔记系列 3 浪潮之巅——深度学习在推荐系统中的应用
  9. 认清隐匿性抑郁症的5个信号,别让病情恶化
  10. 人生不会是场戏的^_^