博客
关于我
编程技巧妙用
阅读量:334 次
发布时间:2019-03-04

本文共 1405 字,大约阅读时间需要 4 分钟。

编程技巧妙用

   在日常做编程题目的时候,想必大家在很多简单的问题上采取了麻烦的做法,如:四舍五入,最后一位输出回车等等…

    接下来,我分享一下,我接触过日常的编程小技巧
↓↓↓↓

1. 四舍五入

对于一个浮点数的四舍五入,可以自身+0.5之后再除1来进行。

例如:5.5四舍五入就可以用以上化简方式: (5.5+1)/1 = 6

2. 最后一位输出回车,其余空格
for(int i = 0; i < n; i ++){    	printf("%d%c", ans[i], i==n-1?'\n':' '); }
3. 线性规划输出特定图形

    想必大家对线性规划有一定的了解活着说是非常熟悉,但是我今天想说的就是把这种数学计算思维应用在编程当中。

   大家可以把控制台的横向和纵向看成是一个坐标轴,只不过这个坐标轴的原点在左上方,y轴也是向下的。

拿一道例题来说明吧~~

金中的蛋糕裱花

描述

金中食堂做的蛋糕总是做成菱形,琪琪希望蛋糕上能裱上一圈小花,她想请你再帮个忙,用电脑画出用“*”号组成的裱花形状,这将是个空心的菱形。

输入

一个整数,n>0。
输出
由n*2-1层 “*” 号组成的空心菱形。
样例输入

5

样例输出

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

代码如下:

#include
int main(){ int n,i,j; scanf("%d",&n); for(i=1;i<=n*2-1;i++) { for(j=1;j<=n*2-1;j++) { if((i==-j+n+1)||(i==j-n+1)||(i==j+n-1)||(i==-j+3*n-1)) printf("*"); else printf(" "); } printf("\n"); } return 0;}

当然扩展一下,如果想做出实心菱形,那么只需要把逻辑判断等于换成大于小于即可

代码如下:

#include
int main(){ int n,i,j; scanf("%d",&n); for(i=1;i<=n*2-1;i++) { for(j=1;j<=n*2-1;j++) { if((i>=-j+n+1)&&(i>=j-n+1)&&(i<=j+n-1)&&(i<=-j+3*n-1)) printf("*"); else printf(" "); } printf("\n"); } return 0;}

当然,代码没有考虑菱形右边的空格问题,但是我想说说明的是计算思维应用到编程中会大大提升效率,无论是时间复杂度还是空间复杂度!

转载地址:http://dbfe.baihongyu.com/

你可能感兴趣的文章
上周热点回顾(9.28-10.4)
查看>>
.NET跨平台之旅:基于.NET Core改写EnyimMemcached,实现Linux上访问memcached缓存
查看>>
[网站公告]数据库服务器IOPS跑满造成网站不能正常访问
查看>>
上周热点回顾(3.28-4.3)
查看>>
上周热点回顾(5.2-5.8)
查看>>
上周热点回顾(5.9-5.15)
查看>>
上周热点回顾(8.8-8.14)
查看>>
.NET跨平台之旅:将示例站点升级至 .NET Core 1.1 Preview 1
查看>>
上周热点回顾(12.12-12.18)
查看>>
上周热点回顾(1.16-1.22)
查看>>
上周热点回顾(1.23-1.29)
查看>>
上周热点回顾(3.20-3.26)
查看>>
上周热点回顾(4.24-4.30)
查看>>
[故障公告]博客站点1台负载均衡遭遇流量攻击,造成联通与移动用户无法正常访问
查看>>
上周热点回顾(5.1-5.7)
查看>>
上周热点回顾(5.8-5.14)
查看>>
上周热点回顾(5.29-6.4)
查看>>
云计算之路-阿里云上:14:20-14:55博客后台2台服务器都CPU 100%引发的故障
查看>>
上周热点回顾(6.19-6.25)
查看>>
云计算之路-阿里云上:docker swarm 集群故障与异常
查看>>