学习地址:https://ke.qq.com/user/index/index.html#/plan/cid=417875&term_id=100498562
代码为渡一教育,若有问题可联系删除。谢谢!
这几个题目很有恶心,耐着性子看完!看懂了,说明你悟性很高,能独立写出来,说明到家了!
小编只能独立写出第四题,逻辑性特强。其它几道题目绕绕的!
如果题目恶心到你,请关注一下!谢谢!秃顶的路上与您共勉!
今天为条件语句补充内容,主要以习题为主,以下为6个习题:
解题顺序为(第一题,第二题,第五题,第三题,第六题)
第一题:计算2的n次幂,n可输入,n为自然数。
解题思路:
①定义一个n
②题目要求“n可输入”表达式:var n = parseInt(window.prompt(‘请输入自然数’));
③管它三七二十一,先套一个for循环
for(var i = 0; i < n 1;i ++){
}
目的是输入一个n,从0开始,一直到第n个数,分析逻辑
n = 1 结果2
n = 2 结果22
n = 3 结果222
可以看出来初始值是由2开始
所以先定义一个变量作为初始值:var mul = 2;
假设n = 1 时,结果为2,那么还需要定义一个变量储存结果值:var sum = muln( 2*)
假设n = 2 时,结果为4,那么还需要定义一个变量储存结果值:var sum = muln( 22)
假设n = 3 时,结果为8,那么还需要定义一个变量储存结果值:var sum = muln( 22*2)
可以看出每一次多会比上一次多乘以一个2,所以需要保存上一次赋值,那么就需要用符合( *= )
var n = parseInt(window.prompt('input'));
var mul = 2;
for(var i = 0; i < n; i ++){
mul*=2;
}
document.write(mul)
这样打印出的结果有些误差:
当n = 2 结果为8
当n = 3 结果为16
则表示多乘了一圈,所以n要减1
var n = parseInt(window.prompt('input'));
var mul = 2;
for(var i = 0; i < n-1; i ++){
mul*=2;
}
document.write(mul)
方法二:
第二题:计算n的阶乘:
2. 计算n的阶乘
// 3! = 321
// 4! = 4321
// 5! = 5432*1
var mul = 1;
for(var i = 1, i <= n, i ++){
document.write(i);
// 这样课可以打印出1.2.3…n
// 要把每次i的值相互相乘
mul *= i;
}
var n = parseInt(window.prompt('input'));
var mul = 1;
for(var i = 1; i <= n; i ++){
document.write(i);
document.write("<br>");
mul *= i;
}document.write(mul);
第五题: 输出三个数,显示出最大的。
var a = parseInt(window.prompt('input'));
var b = parseInt(window.prompt('input'));
var c = parseInt(window.prompt('input'));
if(a > b){
if(a > c){
document.write(a);
}else{
document.write(c);
}
}else{
if(b > c){
document.write(b);
}else{
document.write(c);
}
}
之前小编也有这样写过,不过会有bug,可以看看:
var a = parseInt(window.prompt('input'));
var b = parseInt(window.prompt('input'));
var c = parseInt(window.prompt('input'));
if(a > b && a > c){
document.write(a);
}else if(a > b && a < c){
document.write(c);
}else if(a < b && b > c){
document.write(b);
}else if(a < b && b < c){
document.write(c);
}
这样写a=b或a=c或c=b是会出现bug!!!
第四题:编写一个程序,输入一个三位数的正整数,
输出时反向输出如:456,输出 654
理清思路:
然后把上面内容一步一步写出来:
var a = parseInt(window.prompt('请输入一个三位数正整数'));
// 456 ===> 654
// 456%10 ==>得45余6(6被取出来)
var b = a%10;
456 - 6 ==>450
var c = a - b;
// 450%100==>得4余50
var d = c%100;
// 50/10 ==>5(5被取出来了)
var e = d/10
// 450-50 ==>400
var f = c - d;
// 400/100 ==>4(4被取出来了)
var g = f/100;
// 然后再把6,5,4组合在一起
var h = ""+ b + e + g;
document.write(h);
第三题:著名的斐波那契数列额数列
1 1 2 3 5 8 13 21输出第n项。
分析:
// 1 1 2 3 5 8 13 21
// f s t
// 1 1 2 3 5 8 13 21
// f s t
// 求第6个数的值
// 8 = 3 + 5
// n = (n - 1) + (n + 1);且n>2
代码:有些难理解,多看几遍吧!!!
var n = parseInt(window.prompt('请输入正整数'));
var first = 1,
second = 1,
third;
for(var i = 0;i < n-2; i ++){
third = first + second;
first = second;
second = third;
}
document.write(third);
第六题:打印出100以内的质数
①有个判断质数的公式
②每一个数都要判断一次
代码:有些难理解,多看几遍吧!!!
var count = 0;
for(var i = 2; i < 100; i ++){
// 看看每个i是否为质数
for(var j = 1; j <= Math.sqrt(i); j ++){
if(i%j == 0){
count ++;
}
}
if(count == 1){
document.write(i + " ");
}
count = 0;
}