C语言如何输出菱形

适有同学问起一些C语言题目,本想上网搜索了事,但网上的方法都是分为上下部分用两个嵌套for循环输出。我想有没有合起来输出的呢,这样符合简洁又美观的要求呢?答案是有的。下面是小编为大家搜索整理的C语言如何输出菱形,希望大家能有所收获,更多精彩内容请及时关注我们应届毕业生考试网!

题目:输出行列都相等的菱形,如5行5列:

行列 12345

1 *

2 ***

3 *****

4 ***

5 *

分析:

当行数等于总行数的一半时,'*'是递增的,递增为2。

当行数大于总行数的一半时,'*'是递减的,递增为2。

设有一个行列为n的菱形,

我们用变量i作为行数,以0开始,i

k作为n菱第i行要输出的'*'个数。

则i<=n的中值(用m表示,m=(n-1)/2)时,k递增,i>m时,k递减。

因为k相对于m行对称,所以:

当i>m时,i每增加i-m时的k值就和第m-i行的k值相等,即第i-m行和第m-(i-m)相对称。

所以得出结果:

当i<=m时,k=2i+1

当i>m时,k=2(m-(i-m))+1,(m=(n-1)/2)。即k=2n-2i-1

由于我们只需要输出'*'左边的空格即可,所以每行'*'左边的空格的个数为:(n-每行的k)/2。

每行循环输出空格,再循环输出每行的`'*',再输出回车,结束一行。

这样我们就可以开始编程了。

#include

int main()

{

int i,j,k,n;//定义四个变量:i是行,j每行*号前的空格数,k每行的*号数

printf("please input odd n:");

scanf("%d",&n); //输入奇数n

for (i=0;i

{

if(n>=2*i+1) //判断k值

k=2*i+1;

else

k=2*n-2*i-1;

for(j=(n-k)/2;j>0;j--) //循环输出空格

printf(" ");

for(;k>0;k--) //循环输出*号

printf("*");

printf("n"); //输出回车结束一行

}

本来呢题目就到止结束了,但上面的程序还不够完美

比如说,别人输入n值为偶数怎么办?输入非数值呢?

我们加一点东西进去:

#include

int main()

{

int i,j,k,n=0; //这里给n赋初值,即使输入非数值,n也可有确切的值。

do{ //增加一个大循环,可以令n可以输入多次以观察不同的结果。

printf("please input odd n, 0 to exit:");//当输入0的时候,退出大循环,结束程序。

scanf("%d",&n);

if (!(n%2)) //增加对输入偶数的判断。

{

printf("you input a even, please input again.n");

continue;

}

for (i=0;i

{

if(n>=2*i+1)

k=2*i+1;

else

k=2*n-2*i-1;

j=(n-k)/2;

for(;j>0;j--)

printf(" ");

for(;k>0;k--)

printf("*");

printf("n");

}

}while(n);

return 0;

}

【C语言如何输出菱形】相关文章:

c语言输出菱形for循环_C语言如何输出菱形相关推荐

  1. c语言输出菱形for循环_c语言for循环如何打印菱形

    c语言for循环打印菱形的方法:使用两个for循环,实现条件判断,代码为[int i,j;for(i=0; i<2*n-1; i++){if(i=n-i-1&&j c语言for循 ...

  2. c语言输出菱形for循环_c语言输出菱形

    07 以下是所有的代码: #include void print(int n) { //判断n是否符合正奇数的要求 if(n < 0 || n % 2 == 0) //不符合则直接退出 retu ...

  3. c语言输入姓名输出姓和名_C输入和输出

    c语言输入姓名输出姓和名 Input means to provide the program with some data to be used in the program and Output ...

  4. c程序设计语言 qsort,【程序设计基础_C语言】北理工的恶龙(附qsort范例)

    [程序设计基础_C语言]北理工的恶龙(附qsort实例) 北理工的恶龙(附qsort实例) 背景:最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集 ...

  5. vc 运行c语言步骤,第1章_C语言概述(vc++环境如何运行c语言程序)[精选].ppt

    第1章_C语言概述(vc环境如何运行c语言程序)[精选] C语言程序设计 授课对象:电子商务06 时间安排: 理论课(1-9周): 星期一 5-6节 9407D 星期三 5-6节 9410D 实验课( ...

  6. c语言中闰年的流程图_C语言-算法与流程图

    <C语言-算法与流程图>由会员分享,可在线阅读,更多相关<C语言-算法与流程图(22页珍藏版)>请在人人文库网上搜索. 1.目录,第一章 绪论 第二章 算法与流程图 第三章 数 ...

  7. c语言prime函数怎么用_C语言教程_v20201106

    编程基础 1.1    通俗地理解什么是编程语言 1.2    C语言究竟是一门怎样的语言? 1.6    初中毕业能学会编程吗? 1.7    C和C++到底有什么关系? 1.8    学了 C 语 ...

  8. c语言最小点对问题_C语言教程(一):程序开发理论基础!

    前言: 1.本系列教程适用于刚开始学习 C 语言的同学,或者初级开发者,或者想系统详细了解 C 语言的小伙伴. 2.本系列教程会从C语言基础到 C 语言高级语法,包含 C 语言所有系列. C语言简介 ...

  9. c语言n次方怎么输入_C语言基本数据类型的思维导图

    在使用C语言编写程序时,数据类型是一个非常重要的内容,任何一个不被重视的数据错误都会使编译器无法翻译,导致程序报错. 使用思维导图来梳理各个数据类型是一个很有效的记忆方法,接下来就为大家展示一下我用i ...

  10. c语言string函数的用法_C语言基础| 指针和函数

    点击蓝字关注我们 指针和函数 栈帧:当函数被调用时,系统会在stack空间上申请一块内存,用来给函数提供空间,存储形参和局部变量(定义在函数内部的变量). 当函数调用结束时,这块内存空间会被自动释放( ...

最新文章

  1. 编写python程序的步骤_编写python程序和运行.py文件的方法步骤
  2. ELK实时分析之php的laravel项目日志
  3. 世博会、新三国、新红楼
  4. VS项目属性中的C/C++运行库:MT、MTd、MD、MDd
  5. 【Android 应用开发】 Android 相关代码规范 更新中 ...
  6. PHP函数整理(一)
  7. 小米air耳机重新配对_小米发布 399 元真无线蓝牙耳机,除了小爱同学还支持其他手机语音助手...
  8. cba比赛比分预测_【CBA直播】深圳vs广东前瞻:深圳战广东再掀反攻?
  9. 域名解析服务之DNS查询类型
  10. Number.isInteger在IE中报错的解决方法
  11. ASP.NET2.0服务器控件之自定义状态管理
  12. 下行文格式图片_正确的公文格式图片.doc
  13. JS设计模式 - 工厂模式
  14. ssb门限_判断(2分) 由于DSB信号的调制制度增益是SSB的两倍,所以抗噪声性能比SSB好一倍...
  15. 基于风险平价的资产配置策略
  16. Istio的授权策略
  17. Android 复杂的手势处理利用GestureOverView
  18. 配置 NFS 网络文件系统
  19. OpenWrt配置打印服务器无线桥接,手机无线打印
  20. C++学习笔记(五)opencv在win下的使用 —参考浅墨opencv3编程入门

热门文章

  1. android ant build.xml实例
  2. 解决克隆centos虚拟机后ip配置失败的问题
  3. [51单片机] 串口通讯 简单通信
  4. MFC中onmouseover与onmousemove的区别
  5. 【从C到C++学习笔记】内敛函数/内敛函数与带参数宏的区别/新的类型转换运算符
  6. 【Tensorflow/keras】KeyError: ‘loss‘
  7. 《机器学习Python实践》第5章——数据导入
  8. 在linux中安装Jupyter notebook
  9. 计算机图形学(一)——数据压缩:道格拉斯普克法
  10. ArcGIS学习总结(11)——创建点要素并计算对应经纬度