<C语言程序实例>C语言实现菱形输出
<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语言实现菱形输出相关推荐
- C语言程序实例100个
[程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去掉不满足条件的排列. ...
- c语言220程序,《C语言程序实例大全》原代码220例
<C语言程序实例大全>,一共220个. 找了很多地方都不全,最后在CSDN上用积分下载了这个,C语言初学者可以参考. 下载地址: http://doc.xuehai.net/tp09770 ...
- ev3 c语言高级编程,EV3运行原生C语言程序实例
EV3运行原生C语言程序实例. 本帖最后由 ntwuhui 于 2013-9-20 07:58 编辑 说明: 以下过程直接在EV3系统上编译原生C语言程序,不需要修改固件,Ununtu13.04测试通 ...
- c语言字符输出程序示例,C语言程序实例
C语言程序实例 引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.为了帮助大家更直观地了解C语言,以下是百分网小编介绍给大家的'C语言程序实例,希望大家喜欢! [例 ...
- PIC16F C语言测频率程序,PIC单片机C语言程序—实例5
PIC单片机C语言程序-实例5 来源:华强电子网 作者:华仔 浏览:3630 时间:2016-08-10 14:18 标签: 摘要: 前面已介绍了学习pic单片机c语言程序的一些最基本内容,并以具有一 ...
- c语言程序设计编写钻石图形,C++简单输出钻石菱形图效果
C++简单输出钻石菱形图效果 本文实例讲述了C++简单输出钻石菱形图效果的方法.分享给大家供大家参考,具体如下: /* * 作 者: 刘同宾 * 完成日期:2012 年 11 月 25 日 * 版 本 ...
- c语言最简单程序实例,C语言第一个简单实例
在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: #include / ...
- 回文日期 php,c语言程序实例大全,220个详细程序源代码
c语言 程序设计 实例 大全 目录: 第一部分 基础篇 001 第一个C程序 002 运行多个源文件 003 求整数之积 004 比较实数大小 005 字符的输出 006 显示变量所占字节数 007 ...
- c语言程序水准路线,C++语言在水准路线简易平差中的应用实例(17页)-原创力文档...
C语言在水准路线简易平差中的应用实例C语言在水准路线简易平差中的应用实例 PAGE C++语言在水准路线简易平差中的应用实例 [摘 要]:水准测量工作分为野外数据采集和内业计算,白天测得的大量数据,晚 ...
- 51单片机用c语言写音符代码,51单片机电子琴设计C语言程序实例
51单片机C程序实例,电子琴设计 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsi ...
最新文章
- PCB差分走线的阻抗控制技术(一)
- 江西财经计算机应用杨教授,江西财经大学信息管理学院研究生导师介绍:刘德喜...
- cp分解实现_如何用贝叶斯高斯张量分解修复缺失数据?(Jupyter notebook - Python)
- jdbc写入和读取过程
- 21.实例 --- location
- EndNote x8基础使用教程(一)
- 三星S7edge刷极光ROM的总结_我是亲民_新浪博客
- linux 繁体转简体,Linux下在程序中如何进行繁体中文和简体中文的转换
- 以太网误码率测试软件,最完美的PAM4标准通信数据测试方案大全
- 粒子追踪 matlab,粒子追踪软件 - 研究粒子与场的相互作用
- Python selenium 简单的实现大麦网自动购票过程
- 基于GIS的三维智慧警务系统
- macOS下快速复制文件或文件夹路径
- Linux系统C++调试利器systemtap定位内存double free
- 软工复习一万字资料大全总结超强无敌版稳过乱过
- 四轮转向系统横摆角速度控制simulink仿真模型,利用滑模控制算法,基于八自由度车辆模型
- java线程-从生产者和消费者模型说起
- 在centos7中下载搜狗输入法
- 【计算机考研院校推荐】山东地区汇总-22考研版
- k8s(kubernetes)通过jenkins从harbor拉取镜像,包括yaml传参(史诗级,保姆级)