JavaScript实现打印星型金字塔功能实例分析


Posted in Javascript onSeptember 27, 2017

本文实例讲述了JavaScript实现打印星型金字塔功能。分享给大家供大家参考,具体如下:

让你用其它语言写也是完全一样的道理,

这道题估计大家在学习C语言的时候就见过……

也就是打印以下的鬼东西:

JavaScript实现打印星型金字塔功能实例分析

当时候看到循环结构的时候觉得很无聊,就相当不屑这题,没有好好仔细想想,

因为要是放在JavaScript完全可以这样写,甚至还不算是JavaScript,仅仅就是一个html:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
&nbsp;&nbsp;*
&nbsp;***
*****
&nbsp;***
&nbsp;&nbsp;*
</body>
</html>

这里之所以不用utf-8编码是因为utf-8对于nbsp的处理与*的字体会导致排版错乱,就是不是用标准的宋体字,从而导致最终的结果无法查看。

反正你出题人出多少行,我都可以复制粘贴上面的内容完全可以实现,但是,今天编程编到一定量,有点大数据概念的时候,又见到这题,仔细思考了一下,要是出题人要求输出二十万行这样中间轴对称的星型金字塔,我TMD就呵呵了。

所以还是要彻底搞明白这个怎么实现,虽然在实际的编程中不会出现这样的编程,但是,据说一些无聊的面试还是会出这题,至少,后来者问你C语言的时候,问你如果输出二十万行这样的中间轴对称的星型金字塔,你还是要会,这题如果第一次做不好做的。

一、基本目标

首先弹出一个输入框,让用户输入一个奇数,毕竟轴对称需要一个奇数,
然后为了程序的健壮性,必须对用户输入的东西进行判断,如果输入的不是奇数,就弹出提示,不再执行后面的程序,怎么JavaScript判断一个奇数,我已经在《JavaScript对数字的判断与处理》说过,这里不再进行赘述。

考虑到浏览器的负载,这里,用户输入的奇数,我只允许去到189,你调大一点也可以,189由于在我的电脑里面感觉还可以,所以才定这个数的,没有什么特别的意义,乱输入的,不是故意测试的。

JavaScript实现打印星型金字塔功能实例分析

输入一个189行,IE已经弹出“中止脚本”的提示了,但不中止也完全没有问题!

运行结果如下:

JavaScript实现打印星型金字塔功能实例分析

如果是在写C语言程序或者其他程序,这个值绝对可以定大一点!

二、基本思想

这个弄懂就非常好写了。

JavaScript实现打印星型金字塔功能实例分析

首先,我们仅仅是要在*的左边输出空格,右边就没有必要输出空格了,输完*就直接换行

分两部分,一部分是上半部分i<=n/2的时候,另一部分是下半部分i>n/2的时候,

之所以要这样分是因为这两部分输出的*号与输出的空格数是不同的。

之后就是初中都会的找规律问题了,反正我就找到了如上的规律,编程运行时没有问题,其它数学帝找到更牛B的表达式,小弟甘拜下风。

三、制作过程

代码非常简单,就是条件结构与循环结构的表达,上面的思想弄懂了,不用说了。

这里可能会有人觉得奇怪,为何我要先n++然后n%2!=0再来判断,也就是判断n+1是偶数来判断n是否奇数,

这里主要是为了迎合下面的for循环结构……

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312"/>
</head>
<body>
</body>
</html>
<script>
var i,j,k,n;
n=window.prompt("请输入要输出的行数n,为了形成轴对称,所以你输出的必须是奇数!");
if(isNaN(n)||!n)
  alert("你输入的不是数!");
else{
  n++;
  if(n%2!=0)
    alert("你输入的不是奇数!");
  else if(n>190){
    alert("不要这么大嘛!臣妾做不到啊!");
  }
  else{
    for(i=1;i<n;i++){
      if(i<=n/2){
        for(k=n/2-i;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*i-1;j++)
          document.write("*");
          }
      else{
        for(k=i-n/2;k>0;k--)
          document.write("&nbsp;");
        for(j=0;j<2*(n-i)-1;j++)
          document.write("*");
        }
      document.write("<br>");
    }
  }
}
</script>

说多了也是泪,自己体会……

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript图像处理—仿射变换深度理解
Jan 16 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
May 27 Javascript
Javascript代码实现仿实例化类
Apr 03 Javascript
JavaScript包装对象使用详解
Jul 09 Javascript
javascript图片延迟加载实现方法及思路
Dec 31 Javascript
JavaScript鼠标事件,点击鼠标右键,弹出div的简单实例
Aug 03 Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 Javascript
vue实现类似淘宝商品评价页面星级评价及上传多张图片功能
Oct 29 Javascript
js指定日期增加指定月份的实现方法
Dec 19 Javascript
浅谈React Native 传参的几种方式(小结)
May 21 Javascript
HTML+JavaScript实现扫雷小游戏
Sep 30 Javascript
JavaScript 俄罗斯方块游戏实现方法与代码解释
Apr 08 Javascript
微信小程序 按钮滑动的实现方法
Sep 27 #Javascript
详解Vue-cli代理解决跨域问题
Sep 27 #Javascript
jQuery 利用ztree实现树形表格的实例代码
Sep 27 #jQuery
javascript 作用于作用域链的详解
Sep 27 #Javascript
深入理解Vue2.x的虚拟DOM diff原理
Sep 27 #Javascript
bootstrap table实现双击可编辑、添加、删除行功能
Sep 27 #Javascript
Three.js中网格对象MESH的属性与方法详解
Sep 27 #Javascript
You might like
php数组添加元素方法小结
2014/12/20 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP插件PHPMailer发送邮件功能
2017/02/28 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
javascript 建设银行登陆键盘
2008/06/10 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
三级下拉菜单的js实现代码
2011/05/23 Javascript
本地图片预览(支持IE6/IE7/IE8/Firefox3)经验总结
2013/03/25 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
解析浏览器端的AJAX缓存机制
2016/06/21 Javascript
表单中单选框添加选项和移除选项
2016/07/04 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
详解Vue 实例中的生命周期钩子
2017/03/21 Javascript
bootstrap栅格系统示例代码分享
2017/05/22 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
2018/09/14 Javascript
解决vue热替换失效的根本原因
2018/09/19 Javascript
微信小程序实现提交input信息到后台的方法示例
2019/01/19 Javascript
仿vue-cli搭建属于自己的脚手架的方法步骤
2019/04/17 Javascript
python ansible服务及剧本编写
2017/12/29 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
2018/12/10 Python
Python设计模式之代理模式实例详解
2019/01/19 Python
python分别打包出32位和64位应用程序
2020/02/18 Python
中国综合性网上购物商城:当当(网上卖书起家)
2016/11/16 全球购物
天巡全球:Skyscanner Global
2017/06/20 全球购物
大学秋游活动方案
2014/02/11 职场文书
超市中秋节活动方案
2014/02/12 职场文书
计算机软件专业求职信
2014/06/10 职场文书
中国梦演讲稿3分钟
2014/08/19 职场文书
浅谈Python项目的服务器部署
2021/04/25 Python
用 Python 元类的特性实现 ORM 框架
2021/05/19 Python
Flask response响应的具体使用
2021/07/15 Python