本文是锻炼编程逻辑思维的一些题的归纳,红色字体是个人认为初学比较难懂的题。
1.日期计算器:用户输入年月日,计算并打印出来是今年的第几天,星期几
1 function data(){ 2 //首先输入年月日 3 //1900年 1月1日为周一 4 var year =Number(prompt("请输入今年是哪一年 :")) ; 5 var month =Number(prompt("请输入是哪个月:")) ; 6 var day = Number(prompt("请输入今天是几号:")) ; 7 var i = 1; 8 var sum =0; 9 while(i<month){ 10 switch (i){ 11 case 1: 12 case 3: 13 case 5: 14 case 7: 15 case 8: 16 case 10: 17 sum= sum +31; 18 break; 19 20 case 2: 21 if(year%400==0 || (year%4==0 && year!=0)){ 22 sum = sum+29; 23 }else{ 24 sum = sum +28; 25 } 26 break; 27 28 case 4: 29 case 6: 30 case 9: 31 case 11: 32 sum = sum+30; 33 break; 34 } 35 i++; 36 } 37 sum = sum + day; 38 document.write("今天是这一年的第"+sum +"天"); 39 40 //计算今天周几已知1900的一月一日是周一,计算出1900到现在一共有几天 41 for(var y=1900;y<=year;y++){ //year是自己输入要查询的年份,在年份到1900之间所有的 42 //y表示从1900年开始的每一年 43 if(year%400==0 || (year%4==0 && year!=0)){ 44 sum += 366; //如果是闰年就加366天 45 }else{ 46 sum += 365; 47 } 48 } 49 //计算今天是周几 50 var week= sum%7;//取7余数就是周几(如果一月一号正好是周一的话) 51 switch (week) { 52 case 0: 53 console.log("今天星期日"); 54 break; 55 case 1: 56 console.log("今天星期一"); 57 break; 58 case 2: 59 console.log("今天星期二"); 60 break; 61 case 3: 62 console.log("今天星期三"); 63 break; 64 case 4: 65 console.log("今天星期四"); 66 break; 67 case 5: 68 console.log("今天星期五"); 69 break; 70 case 6: 71 console.log("今天星期六"); 72 break; 73 } 74 } 75
2.判断101-200之间有多少个素数,并输出所有素数。
其中定义布尔类型做判断是开关逻辑思想,会常用。
3.打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。
1 2 3 4
4.将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。
程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:
(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。
(2)如果n>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。
(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。
5.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
6.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1 2
7.计算用户输入的数字的阶乘,例如用户输入的是5,则计算5的阶乘,5的阶乘为 5*4*3*2*1
8.定义一个函数,返回1+1/3+1/5+1/7+....1/n的和
9.定义一个函数,打印九九乘法口诀表
10.有一张0.0001米的纸,对折多少次可以达到珠穆朗玛峰的高度8848;
11.羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能羽毛球拍最多买13个 球最多买66个 水最多买100个
12.定义函数,去掉数组中重复元素
// 2.定义函数,去掉数组中重复元素 function unique(arr){ // 1.循环从arr中取值,i从0,同时创建空数组result for(var i=0,result=[];i){ // 2. 循环遍历result,j从0 for(var j=0;j ){ // 3.如果result中当前元素等于arr中当前元素 arr中的这个数在新数组中已经存在 if(arr[i]==result[j]){ break;//退出循环 } }// 遍历结束 // 如果j等于result的length 表示这个元素在新数组中不存在 if(j==result.length){ // 将arr中当前元素,追加result末尾 result[result.length]=arr[i]; } }// 遍历结束 return result;// 给出返回值 } function testUnique(){ var arr=[1,1,2,2,3,4,3,5,6]; var result=unique(arr); console.log(result); }
13.从键盘接受10个整数,求出其中的最大值和最小值。
14.输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”
15.顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。
16.编写一个程序,用于产生20个0-10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数
思路: 先声明一个数组用来存储所有的随机数的值,然后接受用户输入一个值,依次去比较有没有重复的,有的话计数器(time)加一
1
17.将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换…..,
例如:原数组为:9 2 5 7 8,逆序后的数组为:8 7 5 2 9
这个题主要是要用逆向排序的思路典型
先声明一个数组,存储用户输入,然后再逆向输出
18.对信息加密:每个字符串都转换成Unicode码 保证每一位字符都是五位Unicode码---不够的话用0补上
通过Unicode码解密字符
1 2 3 4 81
19. 有一对幼兔,幼兔1个月后长成小兔,小兔1个月后长成成兔并生下一对幼兔,问几年后有多少对兔子,幼兔、小兔、成兔对数分别是多少。
var a,b,c,sum; for(var i=1;i<=12;i++){ //第一个月的时候 if(i==1){ a = 1; b = 0; c = 0; sum = 1; }else{ c = c + b; b = a; a = c; sum = a + b + c; } document.write(i+"个月后有幼兔:"+a+"对,小兔:"+b+"对,成兔:"+c+"对;一共:"+sum+"对。")
20.实现斐波拉切数列 1 1 2 3 5 8 13 21 特点:每前两个数相加等于第三个数, 前两 个数比较特殊,从第三个数开始。