// Written by Harry

一、思维过程

观察要输出的形状 --- 确定大体思路 --- 转化为数学模型 --- 将问题逐个击破

二、完整代码(以7*7菱形为例)

#include <stdio.h>int main()
{int i,j,k; //定义菱形行数i、每行输出次数j、每行中输出空格计数器kfor(i=1;i<=4;i++) //上半部分有四行{k = 1; //空格计数器for(j=1;j<=i+3;j++) //每行输出4~7次{if(k<=4-i){printf(" ");k++;}else  printf("*");}printf("\n");}for(i=1;i<=3;i++) //下半部分有三行{   k = 1; //计数器for(j=1;j<=7-i;j++){if(k<=i){printf(" ");k++;}elseprintf("*");}printf("\n");}system("pause");return 0;
}

输出结果:

三、分步说明

1.观察要输出的形状

 将菱形分为上下两部分编程,这里分为上4行 + 下3行。

2.确定大体思路

每一部分有固定行数,可使用变量i借助 for循环 控制行数;
每一行有固定输出个数,可使用变量j借助 for循环 控制输出次数;
每一行输出的有空格或符号“*”,可使用 条件判断语句if 控制输出谁。

综上所述,菱形的每半部分都需要使用两个嵌套的for循环 + 一个if判断,这样大致结构(即架构 / 代码骨架)就构思出来了。

3.转化为数学模型

以上半部分举例,在第一个for循环里,变量i共要输出4行,故:

for(i=1;i<=4;i++)

第二个for循环要控制每行输出字符个数,变量j在第一行要输出4次,即i = 1时j = 4,以此类推:

| i = 1 | j = 4 |
| i = 2 | j = 5 |
| i = 3 | j = 6 |
| i = 4 | j = 7 |

可知,j输出范围为[4,7],随i变化而变化,即:

for(j=1;j<=i+3;j++)

这样两个for循环都解决,只剩如何判断每一行每一个字符输出的到底是谁这个问题,我们使用if判断语句,同样,先找出空格计数器(即变量k)的数学关系,这里如果找k与j的关系会很繁琐,所以直接跟i关联,转化为文字解释就是:“哪一行输出多少个 空格 又输出多少个 ‘*’ 呢”,数学关系如下:

| i = 1 | j = 3 |
| i = 2 | j = 2 |
| i = 3 | j = 1 |
| i = 4 | j = 0 |

显而易见,i + k恒等于4,这段代码如下:

if(k<=4-i){printf(" ");k++;}else  printf("*");

因为每一行开始前计数器要归为1,所以在第一个for循环下,第二个for循环前赋值给空格计数器k = 1

k = 1;

又因为每行之间要换行,接着在第一个for循环最后增加换行语句:

printf("\n");

所以,菱形上半部分完整输出代码块如下:

for(i=1;i<=4;i++) //上半部分有四行
{k = 1; //空格计数器for(j=1;j<=i+3;j++) //每行输出4~7次{if(k<=4-i){printf(" ");k++;}else  printf("*");}printf("\n");
}

4.将问题逐个击破

菱形下半部分与上部分同理,代码块如下:

for(i=1;i<=3;i++) //下半部分有三行
{   k = 1; //计数器for(j=1;j<=7-i;j++){   if(k<=i){   printf(" ");k++;}elseprintf("*");}printf("\n");
}
将上下两块代码组合在一起,问题解决。

四、写在最后

CSDN是我在考研期间查资料发现的网站,很多高质量的文章与分享解决了我许多计算机领域的问题与困惑,非常棒。

这是我第一次发博客,因希望将知识分享给更多人、帮助更多人、也想以后方便回顾自己所学而写下了这篇文章,才疏学浅,如有错误之处望指正。每天都在向大家学习中,以后会继续分享一些小知识的,谢谢!

使用C语言输出菱形详解相关推荐

  1. python语言格式化输出_Python format()格式化输出方法详解

    原标题:Python format()格式化输出方法详解 format() 方法的语法格式如下: str.format(args) 此方法中,str 用于指定字符串的显示样式:args 用于指定要进行 ...

  2. C语言再学习 -- 详解C++/C 面试题 2

    (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题. 参看:嵌入式程序员面试问题集锦 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define ...

  3. python自动解析json_Python语言解析JSON详解

    本文主要向大家介绍了Python语言解析JSON详解,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. JSON 函数使用 JSON 函数需要导入 json 库:import jso ...

  4. 【C语言】函数详解(入门到进阶)

    目录 前言 一.什么是函数 二.函数的构成 三.函数的调用和声明 四.函数的参数 五.函数的递归 总结 写在后面 前言 最近帮家里的小朋友整理一些学习C语言的知识点 有整体入门基础文章--[C语言]拯 ...

  5. 一个简单的C语言程序(详解)

    C Primer Plus之一个简单的C语言程序(详解) #include <stdio.h>int main(void) //一个简单的 C程序 {int num; //定义一个名为 n ...

  6. C语言字符集中可显示字符,C++_C语言转义字符实例详解,在字符集中,有一类字符具有 - phpStudy...

    C语言转义字符实例详解 在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么.这类字符称为可显示字符,如a.b.c.$.+和空格符等都是可显 ...

  7. 坐标移动c语言,C语言 坐标移动详解及实例代码

    搜索热词 题目描述 开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动.从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面. ...

  8. [C语言] for循环详解 循环 for循环实例巧解

    前言>>> 嘿嘿,本文要讲的小方法实例使用牛客网的这道题 ↑↑↑ .怎么样!!?  ^  ^ 100% 到底是系统太假还是我写得好??? 开始>>>   题目:线段 ...

  9. 【C语言】字符变量详解

    [C语言]字符变量详解 作为计算机语言中的一种基本数据类型,字符型数据在编写计算机程序时经常用到.在C语言中,字符型数据是以char类型来表示的.在本篇博客中,我们将对C语言中的字符变量进行详细的讲解 ...

  10. 国密算法Go语言实现(详解)(十) ——SM2(椭圆曲线公钥密码算法)

    国密算法Go语言实现(详解)(十) --SM2(椭圆曲线公钥密码算法) 原创代码:https://github.com/ZZMarquis/gm 引用时,请导入原创代码库.本文仅以注释方式详解代码逻辑 ...

最新文章

  1. 怎么复制链接伟html,index.html
  2. 图解:消息传输的架构模式
  3. 用html做12进制时钟特效,js+css3实现简单时钟特效
  4. ubuntu12.04+fuerte 下跑通lsd-slam——数据集
  5. git如何忽略已经提交的文件 (.gitignore文件无效)
  6. viewPager开启界面导航之旅
  7. SolverParameter
  8. python点线图_Python | 点线图
  9. python元素定位input button_python+selenium 定位到元素,无法点击的解决方法
  10. Atitit 控制中心快速启动面板quick launcher
  11. J2SDK 安装配置指南
  12. 华为网络,模拟器ensp的基本使用
  13. 所爱隔山海,山海皆可平
  14. Android rom开发:recovery取消校验Vbmeta version和framework matrix
  15. 我是怎么定位线上问题的?
  16. 【ESP32】Arduino+LVGL 如何使用PSRAM优化显示
  17. Java 实现用户登录项目
  18. 详解ShellShock 漏洞复现原理,内附ShellShock的修复方法
  19. 取消input默认提示框
  20. ARM Linux异常处理之data abort(一)

热门文章

  1. ESP32 LVGL8.1 ——Style Text 设置文字样式 (Style 8)
  2. matlab 音乐 豆腐汤,40岁健康家常菜pdf
  3. 聚类算法效果衡量标准
  4. 串口(UART)的FPGA实现(含源码工程)
  5. [渝粤题库]西北工业大学自动控制理论
  6. 《多多自走棋》、《全民超神》均停服:盘点那些凉得最快的游戏
  7. Sublime Text自定制代码片段之 快速生成html结构
  8. 论文查重库包含哪些?
  9. 什么是USB Key?
  10. Trajan算法(强连通+缩点)