《javascrip编程精解》第二版习题练习(未完,根据自己学习进度更新)
2017-08-01 16:41
288 查看
第二章:
1:LoopinaTriangle
编写一个循环,调用7次console.log打印三角形
#
##
###
####
#####
######
#######
2.1:FizzBuzz
编写一个程序,使用console.log打印出1到100的所有数字,当数字被3整除打印"Fizz",当数字被5整除且不被3整除打印"Buzz"
2.2:修改程序,当程序遇到同时被3和5整除的情况打印"FizzBuzz"
3:棋盘
创建一个棋盘网格每个位置可是空格或者"#",用console.log输出结果
棋盘定义size=8,用于扩展任意长宽棋盘
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
# # # #
第三章:
1:最小值
实现一个和Math.min一样功能的函数,接收两个参数,返回最小值
2:递归
判断一个数的奇偶性,0是偶数,1是奇数,对于其它任何数字N,其奇偶性与N-2相同,说白了就是一个数一直减去2最后是1就是奇数,是0就是偶数,根据这些写一个递归函数isEven,接收一个参数number,返回一个布尔值,使用50和75作为测试参数;如果参数是-1会发生什么,并且修正函数
3:字符计数
编写一个函数countBs,接收一个字符串参数,并返回“B”在这个字符串中出现的次数
编写函数countChat,接收两个参数,第一个参数是一个字符串,第二个参数是一个字符,返回第二参数字符在第一参数字符串中出现次数
第四章:
1:特定范围数字求和
编写一个range函数,接收两个参数,start和end,返回start到end之间的所有数字
编写一个sum函数接收一个数字数组,返回所有数字的和
修改range函数,增加一个step参数,表示步数,如果没指定步数默认是1,调用函数rang(1,10,2)返回[1,3,5,7,9],步数是负数就是逆序range(5,2,-1)返回[5,4,3,2]
2:逆转数组
编写两个函数,reverseArray和reverseArrayPlace,实现逆转数组,不同的是,reverseArray返回一个新数组,原数组不改变;reverseArrayPlace原数组也发生改变
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);
相关文章推荐
- 这里将长期更新一些算法小练习,供自己和同行学习和参考
- sql练习 根据网上的习题,自己又做了个数据库,练习
- android 学习七 一些xml layout组件的说明(自己总结不断更新)
- Android学习系列(3)--App自动更新之自定义进度视图和内部存储
- python学习第八章函数部分课后练习自己尝试的代码
- 精品的拿来学习练习,在前人的精品成功经验之上,加上自己的创新改善。
- 居然一年没没更新了,但学习进度一直龟速进行中
- python学习第三章列表的部分课后练习自己尝试的代码
- 《Python核心编程》第二版第308页第十一章练习 续一 -Python核心编程答案-自己做的-
- c程序设计语言_习题1-11_学习单元测试,自己生成测试输入文件
- [更新Github地址]python学习,自己写了个简单聊天工具mychat
- 学习go语言 习题自己的答案 chapter2
- unity 资源热更新+显示进度条:根据uri下资源
- 继承的几点注意事项(随着自己的学习更新)
- 更新GitHub上自己 Fork 的代码与原作者的项目进度一致
- 更新GitHub上自己 Fork 的代码与原作者的项目进度一致
- 《Python核心编程》第二版第36页第二章练习 续三 -Python核心编程答案-自己做的-
- 【DX11习题学习一】第四章练习 Direct3D Foundations
- 爬虫学习记录——淘宝网获取自己已买到的宝贝(练习cookie和sqlite3)
- 开始我的linux(随学习进度更新)