<C语言程序实例>C语言实现菱形输出


前言

这一问题无论是在C语言还是别的编程语言的入门学习中都会遇到,还是比较常见的,要学一下的。


一、菱形

我们先要看一下我们要输出的菱形是什么样子的。这里举一个例子简单说明一下:

    大家首先要知道一点的是,我们要输出的菱形,星号的总行数一定是奇数。
偶数的话,输出的样子根本就不是标准菱形的样子。
    其次就是,我们在编写程序时,是将这个菱形拆分为上下两个部分进行输出的,即上层的正三角和下层的倒三角。并且我看到有些人会讨论中间最长的星号行,应该属于上层,还是下层,但其实这都不影响。
    我们就拿如图的菱形进行举例,我们可以发现,每一层星号距离左边的空格的个数都等于:5-行号(即5-1;5-2;…);而星号的个数则为:2*行号-1;这样我们就发现了输出的规律。下层在实用此规律的基础上,只不过是上层的逆输出。这是我的一种简单的思维方式。
        还有一种思维方式,可以向大家介绍:

设菱形的总行数为line,总列数为column,当前行为i,当前列为j。上半部分与下半部分的规律不一样,应该分开讨论。

我们着眼于星号,思考什么条件下输出星号,总结出如下的规律。

1) 对于上半部分(包括中间一行),当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(i-1) (column+1)/2-(i-1)为第i行最左边的星号
j<=(column+1)/2+(i-1) (column+1)/2+(i-1)为第i行最右边的星号

2) 对于下半部分,当前行与当前列满足如下关系输出星号:
j>=(column+1)/2-(line-i) (column+1)/2-(line-i)为第i行最左边的星号
j<=(column+1)/2+(line-i) (column+1)/2+(line-i)为第i行最右边的星号

不满足上述条件,则输出空格。

二、代码实现

1.简单化实现方法

代码如下(不适用于长多行的菱形输出):

/* 这里输出的就是我们上面图中的菱形,上层为5,下层为4*/
#include "stdio.h"
void main()
{int i,j;for(i=1;i<=5;i++)//这里的5是指上层行数,根据具体题目要求可进行改变{for(j=1;j<=5-i;j++){printf(" ");}for(j=1;j<=2*i-1;j++){printf("*");}   printf("\n");}/*****************************************************************/for(i=4;i>=1;i--)//这里的4是指下层行数,根据具体题目要求可进行改变{for(j=1;j<=5-i;j++){printf(" ");}for(j=1;j<=2*i-1;j++){printf("*");}printf("\n");}
}

2.通用性实现方法

代码如下,可根据所要的行数进行打印:

#include <stdio.h>
#include <stdlib.h>int main(){int line;  // 菱形总行数int column;  // 菱形总列数int i;  // 当前行int j;  // 当前列printf("请输入菱形的行数(奇数):");scanf("%d", &line);if(line%2==0){  // 判断是否是奇数printf("必须输入奇数!\n");exit(1);}column = line;  // 总行数和总列数相同for(i=1; i<=line; i++){  // 遍历所有行if(i<(line+1)/2+1){  // 上半部分(包括中间一行)for(j=1; j<=column; j++){  // 遍历上半部分的所有列if( (column+1)/2-(i-1)<=j && j<=(column+1)/2+(i-1) ){printf("*");}else{printf(" ");}}}else{  // 下半部分for(j=1; j<=column; j++){  // 遍历下半部分的所有列if( (column+1)/2-(line-i)<=j && j<=(column+1)/2+(line-i) ){printf("*");}else{printf(" ");}}}printf("\n");}return 0;
}

总结

欢迎大家交流,大家共同学习进步!0.o

<C语言程序实例>C语言实现菱形输出相关推荐

  1. C语言程序实例100个

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件的排列.  ...

  2. c语言220程序,《C语言程序实例大全》原代码220例

    <C语言程序实例大全>,一共220个. 找了很多地方都不全,最后在CSDN上用积分下载了这个,C语言初学者可以参考. 下载地址: http://doc.xuehai.net/tp09770 ...

  3. ev3 c语言高级编程,EV3运行原生C语言程序实例

    EV3运行原生C语言程序实例. 本帖最后由 ntwuhui 于 2013-9-20 07:58 编辑 说明: 以下过程直接在EV3系统上编译原生C语言程序,不需要修改固件,Ununtu13.04测试通 ...

  4. c语言字符输出程序示例,C语言程序实例

    C语言程序实例 引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.为了帮助大家更直观地了解C语言,以下是百分网小编介绍给大家的'C语言程序实例,希望大家喜欢! [例 ...

  5. PIC16F C语言测频率程序,PIC单片机C语言程序—实例5

    PIC单片机C语言程序-实例5 来源:华强电子网 作者:华仔 浏览:3630 时间:2016-08-10 14:18 标签: 摘要: 前面已介绍了学习pic单片机c语言程序的一些最基本内容,并以具有一 ...

  6. c语言程序设计编写钻石图形,C++简单输出钻石菱形图效果

    C++简单输出钻石菱形图效果 本文实例讲述了C++简单输出钻石菱形图效果的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 25 日 * 版 本 ...

  7. c语言最简单程序实例,C语言第一个简单实例

    在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: #include                 / ...

  8. 回文日期 php,c语言程序实例大全,220个详细程序源代码

    c语言 程序设计 实例 大全 目录: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 ...

  9. c语言程序水准路线,C++语言在水准路线简易平差中的应用实例(17页)-原创力文档...

    C语言在水准路线简易平差中的应用实例C语言在水准路线简易平差中的应用实例 PAGE C++语言在水准路线简易平差中的应用实例 [摘 要]:水准测量工作分为野外数据采集和内业计算,白天测得的大量数据,晚 ...

  10. 51单片机用c语言写音符代码,51单片机电子琴设计C语言程序实例

    51单片机C程序实例,电子琴设计 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsi ...

最新文章

  1. PCB差分走线的阻抗控制技术(一)
  2. 江西财经计算机应用杨教授,江西财经大学信息管理学院研究生导师介绍:刘德喜...
  3. cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
  4. jdbc写入和读取过程
  5. 21.实例 --- location
  6. EndNote x8基础使用教程(一)
  7. 三星S7edge刷极光ROM的总结_我是亲民_新浪博客
  8. linux 繁体转简体,Linux下在程序中如何进行繁体中文和简体中文的转换
  9. 以太网误码率测试软件,最完美的PAM4标准通信数据测试方案大全
  10. 粒子追踪 matlab,粒子追踪软件 - 研究粒子与场的相互作用
  11. Python selenium 简单的实现大麦网自动购票过程
  12. 基于GIS的三维智慧警务系统
  13. macOS下快速复制文件或文件夹路径
  14. Linux系统C++调试利器systemtap定位内存double free
  15. 软工复习一万字资料大全总结超强无敌版稳过乱过
  16. 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型
  17. java线程-从生产者和消费者模型说起
  18. 在centos7中下载搜狗输入法
  19. 【计算机考研院校推荐】山东地区汇总-22考研版
  20. k8s(kubernetes)通过jenkins从harbor拉取镜像,包括yaml传参(史诗级,保姆级)

热门文章

  1. Http 417错误
  2. Android模拟登陆学信网获取四六级成绩
  3. 从零开始学习3D可视化之爆炸图
  4. 数字资产投资论坛暨全球数字资产领袖委员会成立大会1月16日将在纽约举行
  5. TP5加支付宝手机网站支付配置
  6. 如何打开计算机控制面板,控制面板怎么打开?
  7. 各种LOGO设计标准尺寸
  8. 基于python3的百度街景地图爬虫
  9. 关于JS按钮倒计时禁用的小Demo
  10. python中while循环只能用来实现无限循环的编程_while循环只能实现无限循环的编程...