系列文章目錄
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,sum可以正常使用,如果在函式中使用var關鍵字進行顯式宣告的變數是做為區域變數,而沒有用var關鍵字,使用直接賦值方式宣告的是全域變數,
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://www.uj5u.com/qita/280563.html
標籤:其他
上一篇:2021-04-26
下一篇:C語言實作 三子棋小游戲
