js練習題


1. 題目:

   計算當前日期的是星期幾的功能
   注:設定1900年1月1日為周一

解析:

 已知:一周有七天,1900年1月1日 周一  今天的年份 月份 日期  總天數%7 余數 0周日 1周一 2周二 3周三 4周四 5周五 6周六   總天數%7 余數 0周日 1周一 2周二 3周三 4周四 5周五 6周六

 

代碼:

<body>
<button onclick="calDate()">日期計算器</button>
<script>

function calDate(){
//接收輸入的年 月 日
var year= Number(prompt("請輸入年份:"));
var month= Number(prompt("請輸入月份:"));
var days = Number(prompt("請輸入日期:"));
var i=1;//循環變量
var totals=0;//
var isRun=(year%4==0 && year%100 !=100) || year%400 ==0;


while(i<month){ //5 1< 5? 執行 輸入的日期是這一年的多少天 ----- 當前年份的總天數
//累加天數
switch(i){ //1
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
totals+=31;
break;
case 2:
//根據年份判斷二月的天數
if(isRun){
totals+=29;
}else{
totals+=28;
}
break;
case 4:
case 6:
case 9:
case 11:
totals+=30;
break;
}
i++;
}
totals+=days;
console.log("今天是"+year+"年的第"+totals+"天");

//累計計算,從1900到year-1年 共多少天
for(var y=1900;y<year;y++){ //1902 3 2
//y表示從1900年開始的每一年
if(isRun){
totals += 366;
}else{
totals += 365;
}
}

console.log("從1900.1.1到現在一共"+totals+"天");
//計算 是星期幾?
var week=totals%7;
var msg= "星期";
switch (week) {
case 0:
msg +="日";
break;
case 1:
msg +="一";
break;
case 2:
msg +="二";
break;
case 3:
msg +="三";
break;
case 4:
msg +="四";
break;
case 5:
msg +="五";
break;
case 6:
msg +="六";
break;
}

console.log(year+"年"+month+"月"+days+"日,是"+msg);


}
</script>
</body>

 

2.判斷101-200之間有多少個素數,並輸出所有素數。

代碼:

<button onclick="fun1()">求素數</button>
<body>
<script type="text/javascript">
// function num(){
// var num=Number(prompt("請輸入一個數"))
// var coutent=prompt("請輸入幾個數相加")
// var n=0,sum=0;
// for(var i=1;i<=coutent;i++){
// n=n*10+num;
// sum=sum+n;
//
// }
// console.log(sum);
// }
function fun1(){
for(var i=101; i<=200;i++){
var flag=false;
for(var j=2;j<101;j++){
if(i%j==0){
flag=false;
break;
}else{
flag=true;
}
}
if(flag){
console .log("素數"+i)
}
// if(flag){
// console .log("素數"+i)
// }
}
</script>
</body>

 

3.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+2222+22222(此時共有5個數相加),幾個數相加有鍵盤控制。

代碼:

<body>
<script type="text/javascript">
   function num(){
   var num=Number(prompt("請輸入一個數"))
   var coutent=prompt("請輸入幾個數相加")
   var n=0,sum=0;
   for(var i=1;i<=coutent;i++){
   n=n*10+num;
    sum=sum+n;

   }
   console.log(sum);
   }

4.定義一個函數,打印九九乘法口訣表

代碼:


<body>
<button onclick="num()">開炮</button>
<script type="text/javascript">
function num(){
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
var sum=i*j;
document.write(i+"*"+j+"="+sum+"\t");
}
document.write("<br>")
}
}
</script>
</body>

5.打印出所有的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方。  */

 

/*for( var shui=100;shui<1000;shui++){//s輸出水仙花這個數,在進行區間判斷
shui=Number(shui);將其數據類型定義為整數
var gei =shui%10;//通過取余來得到其個位數的數字
 var s=parseInt((shui/10)%10);//用類型的辦法來得到其十位數的的數
var b=parseInt(shui/100);//得到百位數的數

if(shui==(gei*gei*gei)+(s*s*s)+(b*b*b)){;//根據條件來判斷是否為水仙花數
console.log(shui);
}
}

 

6.定義函數,去掉數組中重復的元素

 

 1  function num1(){//定義一個函數
 2                 var j=[1,2,3,4,5,6,2,1,4,7,911,2,1];//輸出數組的每個元素
 3                 for(var i=0,result=[];i<=j.length-1;i++){//循環遍歷數組j每個元素;並創建一個空數組result
 4                     for (var z=0;z<result.length;z++){//循環遍歷數組result的每個元素;
 5                         if(j[i]==result[z]){//如果數組z和數組j中有相等的元素;則退出當前循環
 6                             break;//
 7                         }
 8                     }
 9                     if(z==result.length){//如果沒有相同的元素,則將這個元素存儲在result數組中
10                         result[result.length]=j[i];//
11                     }
12                         
13                     }
14                     console.log(result);//最后輸出的數組中沒有重復的元素
15                     }

 

7.猜數游戲(在1-10中隨機選出一個數,如果輸入的數大了就輸出“猜大了”;如果輸出的數小了就輸出猜小了“”)-----循環嵌套語句

 

 1 function guess(){//定義函數
 2         var num=parseInt(Math.random()*10);//隨機生成1——10的整數
 3         console.log(num);
 4         while(true){//直接將條件設置為真
 5         var guessnum=prompt("請輸入你要猜的數");
 6         if(guessnum=="exit"){//當猜到exit時,直接退出該循環
 7                 console.log("歡迎下次再來");
 8                 break;
 9          }if(guessnum>num){//當循環為真;輸出“猜大了”
10                 console.log("猜大了")
11          }else if(guessnum<num){//當循環為真;輸出“猜小了”
12                 console.log("猜小了")
13          }else{
14                 console.log("恭喜你,猜對了");
15                 break;
16         }
17         }
18     }

 

7.用戶輸入年份,月份,日期,計算輸入的這一天是這一年的第幾天---------循環語句

 1 function time(){//輸入年 ,月,日
 2         var year=Number(prompt("請輸入年份"));
 3         var month=Number(prompt("請輸入月份"));
 4         var day=Number(prompt("請輸入日期"));
 5         var  i=1;//循環變量
 6         var total=0;//設置累加的天數
 7         var  isrun=(year%4==0 && year%100!=0) || year%400==0 //判斷這一年是否為閏年
 8         while(i<month){//執行,輸入的日期是這一年的多少天----當前年份的總天數
 9             //累加天數
10              switch(i){//運用switch(){}語句來確定每月所對應的天數
11                  case 1://case的下落
12                  case 3:
13                  case 5:
14                  case 7:
15                  case 8:
16                  case 10:
17                  total+=31;
18                  break;
19                  case 2:
20                  //判斷2月份的天數
21                  if(isrun){
22                  total+=29
23                 }
24                  total+=28;
25                 break;
26                 case 4:
27                 case 6:
28                 case 9:
29                 case 11:
30                 total+=30;
31                 break;    
32                }
33                 i++;
34                }
35                 total=total+day;//輸出該月是該年的第幾天
36 
37                 console.log(total)

8.打印出1-100之間的數-----循環語句

 

1 function fun(){
2                 //控制台打印1-100之間所有的數字
3                 for(var i=1(聲明變量i);i<=100(根據區間來將變量進行判斷);i++(變量的更新;防止進入死循環)){
4                     console.log(i);
5                 }
6                 console.log(i);//
7             }

 

8.查找信息

 

 1 <body>
 2         <button  onclick="num()" >查找信息</button>
 3         <script type="text/javascript">
 4             function num() {
 5                 
 6                  var  arr=[10,8,60,70,80,5,12,65,68,90];
 7                  prompt("輸入要查找的數:\n");
 8                  for(var i=0;i<arr.length;i++){                
 9                       if(arr[i]==prompt){
10                           console .log("找到信息")
11                       }else{
12                           console .log("找不到信息")
13                       }
14             }    
15       }  
16     </script>
17     </body>


9.輸入一個四位數,分別取個個位數,並且互換值

 

 1  <button  onclick="num()">第七題</button>
 2     <body>
 3         <script type="text/javascript">
 4             function  num(){
 5              var num=Number(prompt("請輸入一個四位數"))//5678
 6              var arr=new Array(4)
 7              arr[0]=num/1000;   
 8              arr[1]=num/100%10;
 9              arr[2]=num/10%10;
10              arr[3]=num%10;//8
11              for(var i=1;i<arr.length;i++){
12                  arr[i]=arr[i]+5;
13                 arr[i]=arr[i]%10;
14              }
15              arr[0]=arr[3]^arr[0];
16              arr[3]=arr[3]^arr[0];
17              arr[0]=arr[3]^arr[0];
18              
19              arr[1]=arr[1]^arr[2];
20              arr[2]=arr[2]^arr[1];
21              arr[1]=arr[1]^arr[2];
22              
23              console .log(arr)
24         }
25         </script>
26     </body>

 

10. 定義一個函數,打印九九乘法口訣表------>循環語句

 

 1    1*1=1           
 2             1*2=2 2*2=4
 3             1*3=3 2*3=6 3*3=9
 4             1*4=4 2*4=8 3*4=12 4*4=16
 5             ...
 6             1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
 7             1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
 8 
 9         var num=""
10         function cheng(){
11         for(line=1;line<10;line++){//控制行的語句(外層循環)
12             
13         for(var i=1;i<=line;i++){//控制每一行的循環
14                var result=line*i;
15                num+=i+"*"+line+"="+i*line;
16                document.write(i+"*"+line+"="+i*line+"\t")//將line的每一行空格
17                }
18                document.write("<br />")//將line的每一行進行換行處理
19               }
20     }

 

11.求s=a+aa+aaa+aaaa+aa...a的值,其中a(數字)是一個數字。例如2+22+222+2222+22222(此時共有5(疊數)個數相加),幾個數相加有鍵盤控制。

 

1 //判斷
2 var num=prompt("請輸入一個數");//用戶輸出數字
3 var d=prompt("請輸入他的疊數");//用戶輸出該數字的疊數
4 var n=0,sum=0;//聲明n為加數;sum為累加的和
5 for(var i=0;i<=d;i++){//判斷條件;如果聲明一個變量,他的范圍不超過這個疊數
6     sum+=n*10+num;//累加
7 }
8 console.log(sum);//輸出

 

12.判斷101-200之間有多少個素數,並輸出所有素數(大於1的自然數,且他的因子只有兩個(他本身和1))。

 1      var sushu;
 2       for(var sushu=101;sushu<199;sushu++){
 3           
 4               var sushu;//聲明變量,定義為素數
 5               
 6               var count = 0;//count定義為該數因子的個數
 7               for( var j = 1(聲明一個數j) ; j<= sushu(將j作為一個小於素數自然數) ; j++(更新) ){ 
 8                   if( sushu%j == 0 ){//判斷在這個數是否有因子
 9                   //因子 
10                   count++; //有一個因子,因子數就加一
11               }
12                   }
13               //循環結束后 如果 count == 2  一定是素數;因為素數只有一個因子
14               if( count == 2 ){
15                   console.log(sushu)
16               }
17           }
18       
19       console.log(sushu);

13.1~100奇數和

 

1   var sum=0;
2              for(var i=1,sun=0;i<=100;i+=2){循環輸出1-100的奇數;並聲明累加sum的初始值
3                  sum+=i;累加
4              }
5              document.write(sum+"<br />");

 

14.1~100偶數和

 

1  var sum=0;
2              for(var i=2,sun=0;i<=100;i+=2){循環輸出所有偶數;並聲明累加sum的初始值
3                  sum+=i;
4              }
5              document.write(sum);

 

15.

1  var sum=0;
2              for(var i=2,sun=0;i<=100;i+=2){循環輸出所有偶數;並聲明累加sum的初始值
3                  sum+=i;
4              }
5              document.write(sum);

16.輸入一個數字,然后判斷是否為正整數,如果不是,提示重新輸入;如果是,將該數字左右反轉,然后輸出(列如:12345,翻轉之后為54321)

 

 1 var sum=1;
 2 
 3 for(var i=1;i<=2;){循環遍歷
 4 
 5 var num =prompt("請輸入一個數字");
 6 
 7 if(Number(num)>0&&parseint(num)==parsefloat(num)){判斷是否只一個整數
 8 
 9 break;
10 
11 }
12 
13 }
14 
15 /*num=12345
16 
17 5 num%10;
18 
19 4 num/10%10;
20 
21 3 num/100%10;
22 
23 ........
24 
25 */
26 
27 doucument.write(“您輸入的數字為:“+num+”<br />”);
28 
29 for(var j=0;;j++){
30 
31 sum*=10;
32 
33 var fz=parseInt(num%sum/(sum/10));
34 
35 document.write(fz);
36 
37 if(num-sum<=0){
38 
39 break;
40 
41 }
42 
43 }

 

17.求100以內數字之和

 

1  var sum = 0;
2 
3 
4   for(var i=0;i<100;i++)
5   {
6     sum +=i;
7   }
8   alert(sum);

 

18.在頁面中接收一個用戶輸入的數字,並判斷該數是否是質數。

 

 1 <script type="text/javascript">
 2         var num = prompt("請輸入一個大於1的整數:");
 3         if(num <= 1 || isNaN(num)){
 4             alert('該值不合法!');
 5         }else{
 6             var flag = true;
 7             for(var i=2; i<num; i++){
 8                 if(num % i ==0){
 9                     flag = false;
10                 }
11             }
12             if(flag){
13                 alert(num + "是質數!");
14             }else{
15                 alert(num + "不是質數!");
16             }
17         }
18     </script>

 

19.取100以內與7相關的數

 

 1 var s = "";
 2 
 3 
 4   for(var i=0;i<100;i++)
 5   {
 6     if(i%7==0 || i%10==7 ||parseInt(i/10)==7)
 7     {
 8       s = s+i+"|";
 9     }
10   }
11   alert(s);

 

20.數組從大到小排序

 

 1 var  arr = [1,5,56,6,1,1,21,45,4]
 2 var  max;
 3 for(var i = 0; i < arr.length; i++){
 4 for(var j = i; j < arr.length; j++){
 5      if(arr[i] < arr[j]){
 6       max= arr[j];
 7            arr[j] = arr[i];
 8            arr[i] = max;
 9       }
10     }
11  }
12     console.log(arr) // [56, 45, 21, 6, 5, 4, 1, 1, 1]

 

 

 

 

 

 

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM