菱形,就是如下所示的图形,总行数与总列数相等:

写一个程序,根据用户输入的总行数,打印出菱形。

这个题目主要是找出规律,考察读者的逻辑思维。

你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。

下面的程序从第一行开始,遍历所有的列。

设菱形的总行数为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行最右边的星号

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

于是写出如下的代码:

#include

#include

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

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;

}

运行结果:

*

***

*****

*******

*********

***********

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

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

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

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

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

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

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

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

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

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

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

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

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

***********

*********

*******

*****

***

*

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-12/155928.htm

c语言编码菱形,C语言输出菱形代码及解析相关推荐

  1. java设置语言编码_Java多语言编码问题解析

    1.Java编译器在对源文件编译前,会先把源文件转换为unicode编码,因为这个原因,我们在编译时一定要把源文件用的是什么编码方式正确无误的"告诉"编译器. 例如:我们的源文件是 ...

  2. java输入菱形边长,输出菱形

    问题描述: 有一个类Rhombus.java,可以通过main函数显示菱形图案. 1.通过 Scanner 类来获取用户的输入. 2.需要使用嵌套的For语句,并使用System.out.print( ...

  3. python菱形_python如何输出菱形与空心菱形详解与巧妙地使用center方法

    首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的 这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列 我们设菱形上半部分的总行数为rows,当 ...

  4. 用C语言编码定积分,C语言__用六种方法求定积分C语言__用六种方法求定积分.doc...

    C语言__用六种方法求定积分C语言__用六种方法求定积分 描述问题 利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定积分. 分析问题 2.1 ...

  5. c语言编码表白,C语言告白代码,一闪一闪亮晶晶~

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define I 20 #define R 340 int main() { int i,j,e; ...

  6. 一元二次方程求根c语言编码,一元二次方程求解程序完整代码

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面的代码是我刚才无聊写的.对于简单的一元多次方程的迭代 #include #include #include #define MAXTIMES 5 ty ...

  7. c语言 编码 乐学,c语言乐学作业

    2016-08-22 回答 语文的选择题自己做.二.古诗文阅读李姬传1.b2.d 3a4(1)王将军家境清贫,不是广交朋友的人,你何不问一问他呢?(2)而今如果未贫图钱财而赴约,那是我背叛了公子啊!( ...

  8. C语言实现搬山游戏,附上代码及解析

    问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬山数不能超过k座,谁搬最后一座淮输.游戏开始时,计算机请人输入山的总数n和每次允许搬山的最大数k,然后请人开始,等人输入了需要搬走的 ...

  9. c++将小数化为二进制_C/C+学习笔记:C语言实现任意进制转换,代码全解析!...

    问题描述 给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换. 问题分析 掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制.八进制.十六进制及十进制.除了 ...

  10. C/C++学习笔记:C语言实现任意进制转换,代码全解析!

    问题描述 给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换. 问题分析 掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制.八进制.十六进制及十进制.除了 ...

最新文章

  1. 在linux中怎么重置mysql密码_详解如何在Linux(CentOS)下重置MySQL根(Root)密码
  2. Oracle VS DB2 数据类型
  3. 华为鸿蒙系统2.0发布了!AI人工智能大有可为!
  4. 新增一个主键自增长_为什么InnoDB宜用自增主键
  5. 查看linux内核的glibc库,查看当前系统的glibc版本
  6. PHPCMS最新版任意文件上传漏洞分析
  7. 京东每日特价专栏仿写
  8. Word Embedding News|词嵌入新鲜事:六月刊:GPT-3来了
  9. SQL Server 权限的分类
  10. [Redis6]常用数据类型_Zset有序集合
  11. java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法
  12. 昆明理工大学复试计算机试题,2012年昆明理工大学计算机考研复试试题(.PDF
  13. Linux 编辑doc,Linux命令大全(文档编辑).doc
  14. 在Mac OS X上利用Spotlight搜索代码
  15. quartz常见表达式
  16. FIFO、LRU、LFU的含义和原理(转)
  17. 编写安全代码:小心使用浮点数
  18. OJ 1038 宋小胖买切糕
  19. 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
  20. 服务器维护 灵魂兽,魔兽世界7.0新灵魂兽麋鹿捕捉方法

热门文章

  1. 《微积分:一元函数微分学》——导数公式
  2. 股票量化交易系统的指标和策略有哪些?
  3. 解决微擎框架出现Could not resolve: cloud.zhifun.cc (Domain name not found)问题
  4. JS中常见的兼容写法
  5. 三阶魔方中心互换_三阶魔方入门
  6. 195-Redigo基本操作mget-mset
  7. 2021年团体程序设计天梯赛题解
  8. 浅谈12306核心模型设计思路和架构设计
  9. 搜狗浏览器异常问题 - 解决方案
  10. 【Echarts】三维地图叠加柱状图