黑马程序员技术交流社区
标题: 【广州前端】前端基础入门之js基础练习题解析(一) [打印本页]
作者: AMay 时间: 2018-11-1 16:08
标题: 【广州前端】前端基础入门之js基础练习题解析(一)
【前言】
下面是一些关于在学习javascript基础阶段的时候,比较常见的一些练习题。并整理了这些练习的的解题思路和步骤分析
【例题】
1. 找出1到100之间的素数
分析: 1.1素数从2开始,只能被1和本身整除
1.2 从2开始一步一步开始找到100, 每一个都假设是素数都需要遍历(循环)到,第一个for循环,自增的变量为i;
1.3每个数都从2开始到它自己(i)为止,是否能被整除,是否需要推翻假设,第二个for循环。
[HTML] 纯文本查看 复制代码
// 1. 从2开始到遍历到100,假设这里的数都是素数
for (var i = 2; i <= 100; i++) {
// 2. 设置一个标识,标识是素数
var flag = true;
// 4. 验证假设的过程
// 4.1 假如 i 为6
// i%2 == 0 i%3 == 0 i%4 == 0 i%5==0
for(var j=2 ;j < i; j++){
if(i%j==0){
// j =2
// 已i为6为例, 假如他能被 2到5之间的数整除,就会进到这个判断条件
// 这个假设就不成立
flag = false;
break;
}
}
// 3. 如果假设成立,那么i就是素数
if(flag == true){
console.log(i);
}
};
2. 有个人想知道,一年之内一对兔子能繁殖多少对?于是就筑了一道围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?已知兔子的规律为数列: 1,1,2,3,5,8,13,21...
(提示:观察数列的规律即可)
分析: 首先,找出兔子繁殖的规律:1,1,2,3,5,8,13.....,由此可以看出,第一个数+第二个数= 第三个数; 第二个数+ 第三个数= 第四个数.....
步骤解析:1.定义三个变量,然后两个初始化值。第三个作为存储使用
2.先把第二个变量存储进入第三个变量汇总,第二个变量重新赋值成为第一个和第二个之和
3.把存储好的第三个变量赋值给第一个变量。
4.执行12次(因为前两项不需要计算,所以只需要执行10次)。
[HTML] 纯文本查看 复制代码
// 1.先定义三个变量,一个变量用存储的,两个变量用来做初始化的值
var num;
var num1 = 1;
var num2 = 1;
//2.计算12个月后兔子的繁殖熟练,只需循环12-2=10次即可,因为第1对兔子和第2对兔子已经初始化
for (var i = 0; i < 10; i++) {
//先把第二个变量存储在第三方变量num中;
num = num2;
//num1和num2的值相加,赋值给num2,使num2的值更新.
num2 = num1 + num2;
//把前面用第三方变量缓存起来的num2的值,赋值给num1,使num1的值更新;
num1 = num;
}
alert(num2);
3. 输入日期,判断这个日期是这一年的第几天?
[HTML] 纯文本查看 复制代码
//先判断是否是闰年
function isLeap(year){
if (year % 400 == 0 || year % 4 === 0 && year % 100 !== 0){
return true;
}else{
return false;
}
}
// //获取天数
//假设 month = 5 day = 23
//
function getDays(year,month,day){
//先将每个月份的天数存入数组中
var arr = [31,28,31,30,31,30,31,31,30,31,30,31];
//将输入月份之前月份的天数累加
for(var i = 0; i< month -1;i++){
day += arr;
}
//判断是否是闰年且看是否大于2月(小于2月没必要考虑闰年问题)
if(month > 2 && isLeap(year)){
day ++;
}
return day;
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |