《javascrip编程精解》第二版习题练习(未完,根据自己学习进度更新)

来源:互联网 发布:lol网络关注 编辑:程序博客网 时间:2024/05/22 03:53

第二章:

1:LoopinaTriangle

编写一个循环,调用7次console.log打印三角形

#

##

###

####

#####

######

#######

var xx="";for(var b=1;b<=7;b++){xx = xx+"#"console.log(xx)}


2.1:FizzBuzz

编写一个程序,使用console.log打印出1到100的所有数字,当数字被3整除打印"Fizz",当数字被5整除且不被3整除打印"Buzz"

for(var a=1;a<=100;a++){if(a%3===0){console.log("Fizz");}else if(a%3!==0 && a%5===0){console.log("Buzz");}else{console.log(a);}}

2.2:修改程序,当程序遇到同时被3和5整除的情况打印"FizzBuzz"

for(var a=1;a<=100;a++){if(a%3===0 && a%5===0){console.log("BuzzFizz");}else if(a%3!==0 && a%5===0){console.log("Buzz");}else if(a%3===0){console.log("Fizz");}else{console.log(a);}}


3:棋盘

创建一个棋盘网格每个位置可是空格或者"#",用console.log输出结果

棋盘定义size=8,用于扩展任意长宽棋盘

# # # # 

 # # # # 

# # # # 

 # # # # 

# # # # 

 # # # # 

# # # # 

 # # # #

var size=8;for(var b=1;b<=size;b++){var x=""for(var c=1;c<=size;c++){if(b%2===0){x=x+" #"}else{x=x+"# "}if(x.length===size){console.log(x);}}}

第三章:

1:最小值

实现一个和Math.min一样功能的函数,接收两个参数,返回最小值

function MathMin(x,y){if(!isNaN(x)&&!isNaN(y)){    return x<y?x:y;    }else{return "Not a Number!"}}console.log(MathMin("7",4));


2:递归

判断一个数的奇偶性,0是偶数,1是奇数,对于其它任何数字N,其奇偶性与N-2相同,说白了就是一个数一直减去2最后是1就是奇数,是0就是偶数,根据这些写一个递归函数isEven,接收一个参数number,返回一个布尔值,使用50和75作为测试参数;如果参数是-1会发生什么,并且修正函数

function isEven(num){if(num===0){return true}else if(num===1){return false}else if(num<0){return false}else{return isEven(num-2)}}console.log(isEven(50));console.log(isEven(75));console.log(isEven(-1));


3:字符计数

编写一个函数countBs,接收一个字符串参数,并返回“B”在这个字符串中出现的次数

function countBs(str){if(typeof str!=="string"){return "Not a String!"}var count=0;for(var a=0;a<str.length;a++){if("B"===str.charAt(a)){count +=1;}}return count;}console.log(countBs("abfbBhBhhhB"));


编写函数countChat,接收两个参数,第一个参数是一个字符串,第二个参数是一个字符,返回第二参数字符在第一参数字符串中出现次数

function countChar(str,char){if(typeof str!=="string"){return "Not a String!"}var count=0;for(var a=0;a<str.length;a++){if(char===str.charAt(a)){count +=1;}}return count;}console.log(countChar("abfbBhBhhhB","h"));


第四章:

1:特定范围数字求和

编写一个range函数,接收两个参数,start和end,返回start到end之间的所有数字

function range(start,end){var numlist = [];for(start;start<=end;start+=1){numlist.push(start);}return numlist;}


编写一个sum函数接收一个数字数组,返回所有数字的和

function sum(nums){var count=0;for(var x in nums){count = nums[x]+count;}return count;}



修改range函数,增加一个step参数,表示步数,如果没指定步数默认是1,调用函数rang(1,10,2)返回[1,3,5,7,9],步数是负数就是逆序range(5,2,-1)返回[5,4,3,2]

function rangex(start,end,step){if(!step){step=1;}var numlist = [];if(step>=0){for(start;start<=end;start+=step){numlist.push(start);}}else{for(start;start>=end;start+=step){numlist.push(start);}}return numlist;}


2:逆转数组

编写两个函数,reverseArray和reverseArrayPlace,实现逆转数组,不同的是,reverseArray返回一个新数组,原数组不改变;reverseArrayPlace原数组也发生改变

function reverseArray(list){var newList = [];var listLen = list.length-1;for(listLen;listLen>=0;listLen--){newList.push(list[listLen]);}return newList;}var xx = [1,2,3,4,5];console.log(reverseArray(xx));console.log(xx);
function reverseArrayPlace(list){var newList = list;var listLen = list.length-1;for(listLen;listLen>=0;listLen--){newList.push(list[listLen]);}var NewListLen = newList.length;var nums = (NewListLen/2);for(NewListLen;NewListLen>nums;NewListLen--){newList.shift();}return newList;}var xx = [1,2,3,4,5];console.log(reverseArrayPlace(xx));console.log(xx);
function reverseArrayPlace(array){      for(var i=0,length=array.length;i<length;i++){  //Math.ceil()向下取整;Math.round()四舍五入;Math.floor()向上取整  var halfIndex=length%2==0?halfIndex=length/2:Math.ceil(length/2);          if(i<halfIndex){         console.log(halfIndex);         //替换位置,第一个和最后,第二和倒数第二,以此类推          var leftvalue=array[i],                rightvalue=array[length-1-i];              console.log(i);              console.log(length-1-i);              array[i]=rightvalue;                array[length-1-i]=leftvalue;          }      }     return array;}var array=[1,2,3,4,5,6,7,8,9];console.log(reverseArrayPlace(array));console.log(array);
















阅读全文
0 0
原创粉丝点击