系列文章目录
js关于所有循环的逻辑练习题(供初学者内部消化)--------------------------------------系列文章
.
https://editor.csdn.net/md?not_checkout=1&articleId=116136381
文章目录
- 系列文章目录
- 前言
-
- 题目1:求1~100的和?
- 题目2. 求阶乘
- 题目3. 折纸:折多少次和珠穆朗玛峰一样高
- 题目4. 羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能
- 题目5. 公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性
- 题目6. 凑钱 1, 2,5凑20元钱有多少可能
- 题目7. 有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,
- 题目8. 找出100-999之间的所有“水仙花数”。所谓水仙花数是指一个三位 数,各位数字的立方和等于该数本身。
- 题目9. 输出1000年到现在的所有闰年
- 题目10. 编写程序,计算 1!+2!+3!+…..+10!的结果。
- 题目11. 互不相同且无重复数字的三位数
- 题目12. 1000以内完全数
- 题目13. 2棋盘放粮食
- 题目14. 五个小朋友排成一队。
- 题目15. 凑钱1,2,5凑20元钱有多少种可能
- 题目16. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
- 题目17. 某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
- 题目18. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
- 题目19. 设计一个猜拳游戏(1代表石头,2代表剪刀,3代表布),计算每次随机出现1-3任意一个数(parseInt(Math.random()*3)+1),玩家也有三种状态,用玩家出的数和计算出的数进行对比,按照游戏规则比出胜负
- 题目20. js实现简易ATM功能
- 总结
前言
前端js是一种轻量级、可插入 HTML 页面的编程语言。现在几乎所有现代的HTML页面都会使用JavaScript,而且JavaScript适用于大部分浏览器。掌握了javascript,就能透过现象看本质,能够充分理解函数都是对象,对象是引用传递这一点。掌握了javascript,只用关心简单的逻辑和代码,让编写代码变得简单。只要你掌握了基础,你就可以更为深入,并发现JavaScript的所有力量。深入理解javascript的工作原理以及特性后,能够在面对各种层出不穷的前端框架潮流中,以不变应万变。
如果你自认为逻辑不好,那么你就用你的笨逻辑去写好你的代码,不要去管别人怎么实现的,自己先把功能做出来,等你熟练了之后在去看别人的代码,你会从中体会到代码的奥妙。
原来不仅仅可以这样实现,实现的方式很多,逻辑自然而然的就出来了。
1.首先你走入一个思维误区。什么是逻辑思维?代码逻辑思维又是什么?
2.可以明确的告诉你,没有人天生就有代码逻辑的。而代码逻辑全靠自己练出来的。你每天去撸代码十几个小时,一个月之后你就会发现自己是可以的。
昨天发了一篇关于javascript的最简单的基础练习题的汇总,其实非常少,没有充足的时间来总结这些。没想到这篇文章有很多人关注,可能是因为js作为一门动态的脚本语言比较热门,初学者比较多。相信有过基础或学过其他语言的学起来都不会太难吧。没有基础的初学者可能学起来就有点吃力了。为了能为他们提供更好的帮助,我决定汇总写一系列关于js的逻辑运算的题,可以是由浅入深,从逻辑题到实践开发案例。希望可以帮助初学者更好的锻炼逻辑能力,当然代码只看是没有用的,全靠推敲和反复的练习,重点是反复的自己手敲代码。
题目1:求1~100的和?
求和的题目,涉及到了新的一种算法思想,叫做“累加器”。
1+2+3+4+5+6……
正确代码:
1 var sum = 0; //累加器
2 //遍历1~100,将所有的数字扔到累加器里面
3 for(var i = 1 ; i <= 100 ; i++){
4 sum = sum + i;
5 }
6 console.log(sum);
初学者常见的错误:
错误1:不声明sum,不行的,因为所有的变量都要声明:
1 //遍历1~100,将所有的数字扔到累加器里面
2 for(var i = 1 ; i <= 100 ; i++){
3 sum = sum + i;
4 }
5 console.log(sum);
错误2: sum不能在for里直接声明:
1 //遍历1~100,将所有的数字扔到累加器里面
2 for(var i = 1 ; i <= 100 ; i++){
3 var sum = sum + i;
4 }
1 console.log(sum);
错误3: 每次for循环都要var一次,是不正确的:
1 //遍历1~100,将所有的数字扔到累加器里面
2 for(var i = 1 ; i <= 100 ; i++){
3 var sum = 0;//累加器
4 sum = sum + i;
5 }
6 console.log(sum);
题目2. 求阶乘
所谓的阶乘,比如6的阶乘,就是12345*6 = 720。
现在,计算13的阶乘。
1 var result = 1; //累乘器
2
3 for(var i = 1 ; i <= 13 ; i++){
4 result = result * i;
5 }
6 console.log(result);
题目3. 折纸:折多少次和珠穆朗玛峰一样高
var depth = 0.0001;
for(i=1;true;i++){
depth=depth*2
if(depth>8848){
alert(i);
break;
}
}
题目4. 羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能
羽毛球拍最多买13个 球最多买66个 水最多买100个(条件限制)
var m = "";
var n = 0;
for(i=1;i<=13;i++){
for(x=1;x<=66;x++){
for(y=1;y<=100;y++){
var money=i*15+x*3+y*2;
if(money==200){
m += "球拍"+i+"球"+x+"水"+y+"|";
n++;
}
}
}
}
alert(n);alert(m);
题目5. 公鸡2文,母鸡1文,小鸡半文,每种至少一只,100文买100只鸡有多少可能性
公鸡最多50,母鸡最多100,小鸡最多200
var a = "";
var b = 0;
for(i=1;i<=50;i++){
for(x=1;x<=100;x++){
for(y=1;y<=200;y++){
var money=i*2+x*1+y*0.5;
var number=i+x+y;
if(money==100 && number==100){
a += "公鸡"+i+"母鸡"+x+"小鸡"+y+"|";
b++;
}
}
}
}
console.log(b,a)
题目6. 凑钱 1, 2,5凑20元钱有多少可能
1元 20 2元 10 5元 4
var a = "";
var b = 0;
for(i=0;i<=20;i++){
for(x=0;x<=10;x++){
for(y=0;y<=4;y++){
var money=i+x*2+y*5;
if(money==20){
a += "一元"+i+"两元"+x+"五元"+y+"|";
b++;
}
}
}
}
alert(b);alert(a);
题目7. 有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,
问几年后有多少对兔子,幼兔、小兔、成兔对数分别是多少。
var syt = 1;
var sxt = 0;
var sct = 0;
var dyt = 0;
var dxt = 0;
var dct = 0;
for(var i=0;i<10;i++) {
//计算当前月份的兔子数量
dyt = sxt+sct;
dxt = syt;
dct = sct+sxt;
//将当前月份的数量转为上个月的
syt = dyt;
sxt = dxt;
sct = dct;
}
var s = "10个月之后幼兔:"+dyt+"个,小兔:"+dxt+"个,成兔:"+dct+"个";
alert(s);s
X3 * 6528 = 3X * 8256
X为一个数字 填入一个数字 使等式成立
for(x=1;x<10;x++){
var a=(x*10+3);
var b=(3*10+x);
if(a*6528==b*8256){
alert(x);
}
}
题目8. 找出100-999之间的所有“水仙花数”。所谓水仙花数是指一个三位 数,各位数字的立方和等于该数本身。
(如15的3次方=1的3次方+5的3次方+3的3次方)并输出这些数字
for(x=1;x<10;x++){
for(y=1;y<10;y++){
for(z=1;z<10;z++){
m=x*x*x+y*y*y+z*z*z;
n=100*x+10*y+z;
if(m==n){
document.write(n+"<br>");
}
}
}
}
题目9. 输出1000年到现在的所有闰年
var s=0;
for(i=1000;i<2018;i++){
if(i%4==0 && i%100!=0 || i%400==0){
s+=i+"|";
}
}
alert(s);
题目10. 编写程序,计算 1!+2!+3!+……+10!的结果。
var sum=0;
for(i=1;i<11;i++){
var a=1;
for(b=1;b<=i;b++){
a*=b;
}
sum+=a;
}
alert(sum);
题目11. 互不相同且无重复数字的三位数
有数字1、2、3、4,能组成多少个互不相同且无重复数字的三位数?都是多少?
<script>
var count=0;//因为题目有个数的要求
for(var i=1;i<5;i++){
for(var j=1;j<=4;j++){
for(var k=1;k<=4;k++){
if(i !== j && i !== k && j !== k){
document.write(''+i+j+k+"<br />")
//这里注意,如果不将i、j、k转换为string类型进行字符串拼接,它在打印出时会直接进行加运算,我说这可真弱智啊,AI都要取代人类了还这么不机敏=_=
count++
}
}
}
}
document.write("有"+count+"个无重复三位数")
</script>
题目12. 1000以内完全数
如果一个自然数,恰好与除去它本身以外的一切因数的和相等,这种数叫做完全数
<script>
for(var i=1;i<=1000;i++){
var sum=0;
for(var j=1;j<i;j++){
if(i%j==0){
sum+=j;
}
}
if(sum==i){
console.log(i)
}
}
</script>
题目13. 2棋盘放粮食
棋盘有32个格子,第一个格子放1个芝麻,第二个放2个,第三个放4个,第四个放8个。。。每个芝麻的重量为0.00001kg,如果要放满整个棋盘,需要多少重量的芝麻。、
var b=0
var c=1
for(var a=1; a<33; a++)
{
b=c+b
c=c*2
}
alert(b*0.00001)
题目14. 五个小朋友排成一队。
问第一个多大了,第一个说比第二个大两岁,
问第二个,第二个说比第三个大两岁,以此类推。
问第五个小朋友几岁了,第五个小朋友说3岁了。
问第一个小朋友几岁?
var a = 1;
for (var i=1; i<=5; i++){
a = a + 2;
}
document.write("第一个小朋友"+a+"岁了");
题目15. 凑钱1,2,5凑20元钱有多少种可能
for(var a=0;a<=20;a++){
for(var b=0;b<=10;b++){
for(var c=0;c<=4;c++){
if(a+2*b+5*c==20){
document.write("一块:"+a+"两块:"+b+"五块:"+c+"<hr />")
}
}
}
}
题目16. 大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
//驮100石粮食,大马需要50匹
for(var a=0;a<=50;a++){
//驮100石粮食,中马需要100匹
for(var b=0;b<=100;b++){
//驮100石粮食,只需要100减去大马和中马的数量就是小马的数量
var c=100-a-b;
if((a+b+c==100) && (2*a+b+c/2==100)){
document.write("大马:"+a+"中马:"+b+"小马:"+c+"<hr />");
}
}
}
题目17. 某侦察队接到一项紧急任务,要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人,但有以下限制条件:
●A和B两人中至少去一人;
●A和D不能一起去;
●A、E和F三人中要派两人去;
●B和C都去或都不去;
●C和D两人中去一个;
●若D不去,则E也不去。
问应当让哪几个人去?
for(var a=0;a<=1;a++){
for(var b=0;b<=1;b++){
for(var c=0;c<=1;c++){
for(var d=0;d<=1;d++){
for(var e=0;e<=1;e++){
for(var f=0;f<=1;f++){
//根据上面列出的条件,全都加到判断中,符合条件的就是最终的结果
if(a+b>=1 && a+d!=2 && a+e+f==2 && b==c && c+d==1 && (d+e==0||d==1)){
document.write('a='+a+'<br />b='+b+'<br />c='+c+'<br />d='+d+'<br />e='+e+'<br />f='+f);
}
}
}
}
}
}
}
题目18. 公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
var peach = 1 //我们已知最后一天的桃子数量和经过的天数 所以我们就可以逆向思维 虚空生桃来逆推第一天的数量
for (var i = 1; i <= 6; i++) {
//第七天已经算进去了所以循环只有6次(天)
peach = (peach + 1) * 2 //明天的桃子等于今天的桃子加上丢到的一个桃子再乘以2
}
console.log(peach); //循环结束后输出结果
题目19. 设计一个猜拳游戏(1代表石头,2代表剪刀,3代表布),计算每次随机出现1-3任意一个数(parseInt(Math.random()*3)+1),玩家也有三种状态,用玩家出的数和计算出的数进行对比,按照游戏规则比出胜负
//生成一个1-3的随机数
var _random = 1 + Math.floor(Math.random() * 3);
//用户输入1-3的数字
var cunstomNum = prompt('输入1-3整数');
//进行比较
var result = null;
switch (cunstomNum) {
case '1':
switch (_random) {
case 1:
result = "平局";
break;
case 2:
result = "用户胜利";
break;
case 3:
result = "电脑胜利";
break;
case '2':
switch (_random) {
case 1:
result = "用户胜利";
break;
case 2:
result = "平局";
break;
case 3:
result = "电脑胜利";
break;
case '3':
switch (_random) {
case 1:
result = "电脑胜利";
break;
case 2:
result = "用户胜利";
break;
case 1:
result = "平局";
break;
}
}
alert(result);
题目20. js实现简易ATM功能
题目描述:
里面现存100块钱。
如果存钱,就用输入的钱数加上先群的钱,然后弹出余额。
如果取钱,就减去取的钱,然后显示余额。
如果显示余额,就显示余额。
如果退出,就进行判断再退出。
var money = 100;
do {
var i = prompt("请输入您要的操作" + "\n1. 存钱" + "\n2.取钱" + '\n3.显示余额' + '\n4.退出')
if (i == 1) {
var a = prompt("请输入需要存的钱数")
money += parseInt(a)
alert("您的余额为" + money)
} else if (i == 2) {
var b = prompt("请输入需要取的钱数");
money -= parseInt(b)
if(parseInt(b)>money){
alert("余额不足")
continue;
}
alert("你的余额为" + money)
} else if (i == 3) {
var c = alert('余额为' + money);
} else if (i == 4) {
alert("退出");
break;
} else {
alert("输入有误");
}
} while (i != 4);
总结
更多案例可参考上一篇javascript的基础练习题:
https://blog.csdn.net/weixin_44070254/article/details/116070003?spm=1001.2014.3001.5501
更多板块以及系列逻辑题分类和案例待更新,有兴趣的可以多多支持关注。
转载:https://blog.csdn.net/weixin_44070254/article/details/116136381