用js写直角三角形,等腰三角形,菱形

//一、 画一个直角三角形

// 第几行   *号数

// *        1        1

// **       2        2

// ***      3        3

// ****     4        4

// *****    5        5

// 规律:行数 = *号数

function left(n){  //  right为函数名,n为形式参数,用于接收实体参数。

for(var i = 1; i <= n; i++){    //  声明i为打印行数

for(var j = 1; j <= i; j++){       //声明j为一行打印多少个*

document.write("*");

}

document.write("<br>");     //每打印一行就执行一次换行

}

}

left(5);      //要求函数打印10行*,实体参数!

// 二、画一个直角三角形

//     *    4    空格    1    *

//    **    3    空格    2    *

//   ***    2    空格    3    *

//  ****    1    空格    4    *

// *****    0    空格    5    *

// 规律: 一行 : 空格 + *;

//          空格 = 总行数 - 空格所在行数

//          行数 = *号数

function right(n){

for(var i = 1; i <= n; i++){    //  声明i为打印行数

for(var k = 1; k <= n - i; k++){ //声明k为打印空格

document.write("&ensp;");

}

for(var j = 1; j <= i; j++){       //声明j为一行打印多少个*

document.write("*");

}

document.write("<br>");     //每打印一行就执行一次换行

}

}

right(5);

// 三、画一个等腰三角形

//                         行数

//         锋             j= 1     空格 4       锋    1

//       锋锋锋          j= 2      空格 3        锋    3

//     锋锋锋锋锋         j= 3      空格 2       锋    5

//   锋锋锋锋锋锋锋       j = 4     空格 1       锋    7

// 锋锋锋锋锋锋锋锋锋       j = 5    空格 0       锋    9

//                                 空格5-j      锋   2*j-1

// 思路:我们输出的空格数只算文字左边的即可!按最大行数-锋字个数

// 规律: 空格 = 最大行数 - 单个行数;  锋 = 2 * 单个行数 - 1;

function all(n){

for(var i = 1; i <= n; i++){    //  声明i为打印行数

for(var k =1; k <= n - i; k++){     //声明k为打印空格

document.write("&emsp;");

}

for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字

document.write("锋");

}

document.write("<br>");

}

}

all(5);

// 注意:  &nbsp;   不断行的空白(1个字符宽度)

//        &ensp;     半个空白(1个字符宽度)

//        &emsp;     一个空白(2个字符宽度)

//        &thinsp;   窄空白(小于1个字符宽度)

// 此处用的&emsp;相当于一个汉字宽度

// 四、画一个菱形方案一

//                         行数

//         锋             j= 1     空格 4       锋    1

//       锋锋锋          j= 2      空格 3        锋    3

//     锋锋锋锋锋         j= 3      空格 2       锋    5

//   锋锋锋锋锋锋锋       j = 4     空格 1       锋    7

// 锋锋锋锋锋锋锋锋锋       j = 5    空格 0       锋    9

//   锋锋锋锋锋锋锋                              空格5-j      锋   2*j-1

//     锋锋锋锋锋

//       锋锋锋

//         锋

//  思路:做两个等腰三角形,一个朝上,一个朝下,下面的去掉一行,避免中间重复,因为菱形行数都是奇数

function up(n){

//  上面一个

for(var i = 1; i <= n; i++){    //  声明i为打印行数

for(var k =1; k <= n - i; k++){     //声明k为打印空格

document.write("&emsp;");

}

for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字

document.write("锋");

}

document.write("<br>");

}

// 下面一个

// 重点:首先行数要减一;第二,文字是从多一次减少,所以行数范围和自增自减要改变!

for(var i = n - 1; i >= 1; i--){    //  声明i为打印行数

for(var k =1; k <= n - i; k++){     //声明k为打印空格

document.write("&emsp;");

}

for(var f = 1; f <= 2*i - 1; f++){  //声明f为打印文字

document.write("锋");

}

document.write("<br>");

}

}

up(9);

//拓展  做一个空心菱形

//         锋

//        锋 锋

//       锋   锋

//      锋     锋

//     锋       锋

//    锋         锋

//   锋           锋

//  锋             锋

// 锋               锋

//  锋             锋

//   锋           锋

//    锋         锋

//     锋       锋

//      锋     锋

//       锋   锋

//        锋 锋

//         锋

function up(n) {

//  上面一个

for (var i = 1; i <= n; i++) {    //  声明i为打印行数

for (var k = 1; k <= n - i; k++) {     //声明k为打印空格

document.write("&emsp;");

}

for (var f = 1; f <= 2 * i - 1; f++) {  //声明f为打印文字

// document.write("锋");

if (f == 1 || f == 2 * i - 1) {    //当文字为第一个或最后一个时打印

document.write("锋");

} else {                         //否则这一行其他为空

document.write("&emsp;");

}

}

document.write("<br>");

}

// 下面一个

// 重点:首先行数要减一;第二,文字是从多一次减少,所以行数范围和自增自减要改变!

for (var i = n - 1; i >= 1; i--) {    //  声明i为打印行数

for (var k = 1; k <= n - i; k++) {     //声明k为打印空格

document.write("&emsp;");

}

for (var f = 1; f <= 2 * i - 1; f++) {  //声明f为打印文字

// document.write("锋");

if (f == 1 || f == 2 * i - 1) {     //当文字为第一个或最后一个时打印

document.write("锋");

} else {                          //否则这一行其他为空

document.write("&emsp;");

}

}

document.write("<br>");

}

}

up(9);

// 画一个菱形方案二

// 思路:我们把菱形看成上下对称的阶梯

//-4          锋

//-3        锋锋锋

//-2      锋锋锋锋锋

//-1    锋锋锋锋锋锋锋

//0   锋锋锋锋锋锋锋锋锋

//1     锋锋锋锋锋锋锋

//2       锋锋锋锋锋

//3         锋锋锋

//4           锋

// j=-4  空格   4    锋   9-2*4=1

// j=-3  空格   3    锋   9-2*3=3

// j=-2  空格   2    锋   9-2*2=5

// j=-1  空格   1    锋   9-2*1=7

// j=0   空格   0    锋   9-2*0=9

// j=1   空格   1    锋   9-2*1=7

// j=2   空格   2    锋   9-2*2=5

// j=3   空格   3    锋   9-2*3=3

// j=4   空格   4    锋   9-2*4=1

// 用到到方法:     Math.abs(-10)  => 10     取绝对值

function center(n) {

var mid = parseInt((n - 1) / 2); // =>  4  声明一个对称范围

for(var i = -mid; i <= mid; i++){   //声明行数为-4

for(var k = 1; k <= Math.abs(i); k++){  //声明k为空格数,小于等于行数的绝对值

document.write("&emsp;");

}

for(var f = 1; f <= n - 2 * Math.abs(i); f++){

// 声明f为文字数,取值范围为:总行数 - 2 * 单行行数的绝对值

document.write("锋");

}

document.write("<br>");

}

}

center(9);

// 此处有个小bug,实参取值必须是奇数!又菱形固有原理决定

原文地址:https://www.cnblogs.com/zhang-qi/p/12075477.html

时间: 2024-10-17 05:35:48

用js写直角三角形,等腰三角形,菱形的相关文章

原生JS写的ajax函数

参照JQuery中的ajax功能,用原生JS写了一个ajax,功能相对JQuery要少很多,不过基本功能都有,包括JSONP. 调用的方式分为两种: 1. ajax(url, {}); 2. ajax({}); 调用的方法参照JQuery的ajax,只是 不需要写$.ajax ,只需要写 ajax 就可以了. 代码如下: !function () { var jsonp_idx = 1; return ajax = function (url, options) { if (typeof url

用js 写计算器

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"   http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <meta http-equiv = "content-type" content="text/html;charset=utf-8"/> &

js 多个checkedBox分组互斥功能实现 由于QQ邮件无法发送暂且将js写在博客园

今天有一项目需要实现多个checkbox分组实现组内互斥功能 . 具体要求如下:大的分类分为A B C 三类, 其中 A   B 中又分为 A1 A2 A3   B1 B2 B3  二级分类,二级分类下又有 A11  A12 A13 A14  A21 A22 A31 A32  B11 B12 B13 B14 ... .要求实现 A B C 互斥 A1 A2 A3 B1 B2 B3 组内互斥.具体结构及代码如下 具体功能树如下: A A1 A11 A12 A13 A2 A21 A22 A3 A31

js写基础insertAfter()方法

DOM没有提供insertAfter()方法,使用js写一个基础的insertAfter()方法. ? 1 2 3 4 5 6 7 8 9 10 11 12 <script type="text/javascript"> function insertAfter(newElement,targetElement){     var parent = targetElement.parentNode;     if(targetElement == parent.lastCh

js写一个通讯录

模拟通讯录列表功能 我们手机上面的通讯录列表里面都有根据右侧的字母跳滚动到该字母的第一个名单地方. 于是我把这个功能拆分成两个功能区思考: 第一个是如何把这些名字的的汉字首字母提取出来,并且把相同字母的汉字归类,最后显示成列表. 第二是右侧字母导航,它需要一直固定在右侧,并且我按一个字母,屏幕最中间会弹出一个字母方框,代表我选中了这个字母. 我首先去实现第一个问题,如何提取名字中第一个汉字的首字母? 我去尝试过许多种方法,其中尝试过使用localeCompare(),我也成功的排序了,但是我发现

JS写小游戏(一):游戏框架

前言 前一阵发现一个不错的网站,都是一些用html5+css+js写的小游戏,于是打算学习一番,写下这个系列博客主要是为了加深理解,当然也有一些个人感悟,如果英文好可以直接Click Here. 概述 一般,小游戏都要关注两个问题:刷新和交互.因为游戏一般是动态的,所以需要不断刷新.JavaScript是单线程,如果用C语言写过贪吃蛇之类的小游戏,应该知道,单线程一般是挂起一个时间来达到动态效果.比如C语言的Sleep(),JS的setInterval()等.但是js还有一种更高性能的方法req

css,js写的简易的tab导航

简易tab导航 作为前端新手,看着别人写的tab导航代码,自己想模仿却总是忘记.于是这次自己利用css,js写了简易的tab导航,话不多说,上代码,首先是html和css部分 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>tab选项卡切换</title> <style type="tex

用原生JS写移动动画案例及实际应用

js很强大 相信很多人都知道,那么它有哪些强大之处呢?有兴趣的人可以去查查,这里就不赘述了,因为不在本片文章讨论的范围. 我们要讲的是怎么用原生JS写移动动画?我们先举一个最简单的动画例子,很多网站的左边或右边会有个分享的框,鼠标放上去就还移出一个列表,里面是要分享的地址.鼠标移开,就会移进去. 要实现这个效果要怎么做呢? 可以想一想,鼠标经过和鼠标离开很好理解 用onmousemove事件和onmouseout事件就能完成. 那移动动画呢?我们可以一步一步思考, 首先,一开始是这样的 完成移动

原生js写的一个弧形菜单插件

弧形菜单是一种半弧式或者全弧形菜单,是一种不同于传统横向或者竖向菜单形式的菜单.最近在网上看到好多人写出了这种效果,于是也尝试自己写了一个. 实现方式:原生态js 主要结构: 1.参数合并 1 var defaultPra = { 2 mainMenuId: "ArcMenu",//主菜单id 3 menuBoxId:"menuBox",//菜单包裹id 4 position: "",//弧形菜单 5 customPosition:"0