c语言编码菱形,C语言输出菱形代码及解析
菱形,就是如下所示的图形,总行数与总列数相等:
写一个程序,根据用户输入的总行数,打印出菱形。
这个题目主要是找出规律,考察读者的逻辑思维。
你可以从第一行开始,遍历所有的列,也可以从第一列开始,遍历所有的行。
下面的程序从第一行开始,遍历所有的列。
设菱形的总行数为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语言输出菱形代码及解析相关推荐
- java设置语言编码_Java多语言编码问题解析
1.Java编译器在对源文件编译前,会先把源文件转换为unicode编码,因为这个原因,我们在编译时一定要把源文件用的是什么编码方式正确无误的"告诉"编译器. 例如:我们的源文件是 ...
- java输入菱形边长,输出菱形
问题描述: 有一个类Rhombus.java,可以通过main函数显示菱形图案. 1.通过 Scanner 类来获取用户的输入. 2.需要使用嵌套的For语句,并使用System.out.print( ...
- python菱形_python如何输出菱形与空心菱形详解与巧妙地使用center方法
首先应该了解菱形在输出时,每一行的组成有哪些规律,并且除了中间的一行,上部分和下半部分应该是对称的 这是一个我们要准备输出的一个菱形的模板 ,一共有7行 7列 我们设菱形上半部分的总行数为rows,当 ...
- 用C语言编码定积分,C语言__用六种方法求定积分C语言__用六种方法求定积分.doc...
C语言__用六种方法求定积分C语言__用六种方法求定积分 描述问题 利用①左矩形公式,②中矩形公式,③右矩形公式 ,④梯形公式,⑤simpson公式,⑥Gauss积分公式求解定积分. 分析问题 2.1 ...
- c语言编码表白,C语言告白代码,一闪一闪亮晶晶~
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #include #include #include #define I 20 #define R 340 int main() { int i,j,e; ...
- 一元二次方程求根c语言编码,一元二次方程求解程序完整代码
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面的代码是我刚才无聊写的.对于简单的一元多次方程的迭代 #include #include #include #define MAXTIMES 5 ty ...
- c语言 编码 乐学,c语言乐学作业
2016-08-22 回答 语文的选择题自己做.二.古诗文阅读李姬传1.b2.d 3a4(1)王将军家境清贫,不是广交朋友的人,你何不问一问他呢?(2)而今如果未贫图钱财而赴约,那是我背叛了公子啊!( ...
- C语言实现搬山游戏,附上代码及解析
问题描述 设有n座山,计算机与人作为比赛的双方,轮流搬山.规定每次搬山数不能超过k座,谁搬最后一座淮输.游戏开始时,计算机请人输入山的总数n和每次允许搬山的最大数k,然后请人开始,等人输入了需要搬走的 ...
- c++将小数化为二进制_C/C+学习笔记:C语言实现任意进制转换,代码全解析!...
问题描述 给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换. 问题分析 掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制.八进制.十六进制及十进制.除了 ...
- C/C++学习笔记:C语言实现任意进制转换,代码全解析!
问题描述 给定一个 M 进制的数 x,实现对 x 向任意的一个非 M 进制的数的转换. 问题分析 掌握不同数制间的转换关系是解决问题的关键,这里所说的数制一般包括二进制.八进制.十六进制及十进制.除了 ...
最新文章
- 在linux中怎么重置mysql密码_详解如何在Linux(CentOS)下重置MySQL根(Root)密码
- Oracle VS DB2 数据类型
- 华为鸿蒙系统2.0发布了!AI人工智能大有可为!
- 新增一个主键自增长_为什么InnoDB宜用自增主键
- 查看linux内核的glibc库,查看当前系统的glibc版本
- PHPCMS最新版任意文件上传漏洞分析
- 京东每日特价专栏仿写
- Word Embedding News|词嵌入新鲜事:六月刊:GPT-3来了
- SQL Server 权限的分类
- [Redis6]常用数据类型_Zset有序集合
- java 图片分段上传_java实现分段读取文件并通过HTTP上传的方法
- 昆明理工大学复试计算机试题,2012年昆明理工大学计算机考研复试试题(.PDF
- Linux 编辑doc,Linux命令大全(文档编辑).doc
- 在Mac OS X上利用Spotlight搜索代码
- quartz常见表达式
- FIFO、LRU、LFU的含义和原理(转)
- 编写安全代码:小心使用浮点数
- OJ 1038 宋小胖买切糕
- 大学计算机基础实训13,东南大学《大学计算机基础》实验13EXCEL图表制作.pdf
- 服务器维护 灵魂兽,魔兽世界7.0新灵魂兽麋鹿捕捉方法