编程技巧妙用
发布日期:2021-05-07 09:50:55 浏览次数:15 分类:精选文章

本文共 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;}

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

上一篇:不用找了,阿里面试专家整理:Tomcat+虚拟机+Spring全家桶+MyBatis源码等
下一篇:阿里P8面试官说太详细的947页神仙文档,吃透80%定级P7级

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2025年04月02日 12时06分43秒