注册 登录
编程论坛 JavaScript论坛

JavaScript题目解析

leeqihero 发布于 2016-06-15 10:44, 9615 次点击
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
39 回复
#2
leeqihero2016-06-15 10:44
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
for(var i=1;i<5;i++){
    for(var j=1;j<5;j++){
        for (var k=1;k<5;k++){
            if(i!=k&&i!=j&&j!=k)显示+=i.toString()+j.toString()+k.toString()+"<br />";
        }
    }
}
document.body.innerHTML=显示;
</script>
</html>
#3
leeqihero2016-06-15 10:55
【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高
    于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
    成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于
    40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
    100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
#4
leeqihero2016-06-15 11:43
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 工资分界=[0,100000,200000,400000,600000,1000000];
var 税率=[0.1,0.075,0.05,0.03,0.015,0.01];
var 税收=[];
var 税收累计=[0];
for(var i=0;i<工资分界.length-1;i++){
    税收.push((工资分界[i+1]-工资分界[i])*税率[i]);
    var k=0;
    for(var j=0;j<税收.length;j++){
        k+=税收[j];
    }
    税收累计.push(k);
}
var 工资分界累计=[0];
for(var i=0;i<工资分界.length-1;i++){
    工资分界累计.push(税收累计[i+1]);
}
var 工资=prompt("工资");
for(var a=0;a<工资分界.length;a++){
    if(工资<=工资分界[a])break;
}
var 显示=(工资-工资分界[a-1])*税率[a-1]+工资分界累计[a-1];
document.body.innerHTML=显示;
</script>
</html>
#5
leeqihero2016-06-15 11:45
【程序3】
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
1.程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后
       的结果满足如下条件,即是结果。
#6
leeqihero2016-06-15 13:11
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var a=0;
while(a<10000){
    if(Math.sqrt(a+100)>>0==Math.sqrt(a+100)&&Math.sqrt(a+268)>>0==Math.sqrt(a+268))显示+=a+"<br />";
    a++;
}
document.body.innerHTML=显示;
</script>
</html>
#7
leeqihero2016-06-15 13:12
【程序4】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊
       情况,闰年且输入月份大于3时需考虑多加一天。
#8
leeqihero2016-06-15 21:17
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
Array.prototype.累计=function(){
    for(var i=1;i<this.length;i++)this[i]=this[i]+this[i-1];
    return this;
}
var 平年月天数=[31,28,31,30,31,30,31,31,30,31,30,31];
var 闰年月天数=[31,29,31,30,31,30,31,31,30,31,30,31];
var 年=prompt("年");
var 月=prompt("月");
var 日=prompt("日");
var 月累计天数=(年%400==0||(年%4==0&&年%100!=0))?闰年月天数.累计():平年月天数.累计();
月累计天数.unshift(0);
var 显示=日*1+月累计天数[月-1];
document.body.innerHTML=显示;
</script>
</html>


[此贴子已经被作者于2016-6-30 19:24编辑过]

#9
leeqihero2016-06-15 21:18
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,
       然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
#10
leeqihero2016-06-15 21:27
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 数组=[];
var x=prompt("x");
var y=prompt("y");
var z=prompt("z");
数组.push(x);
数组.push(y);
数组.push(z);
数组.sort(function(a,b){return a-b;});
document.body.innerHTML=数组;
</script>
</html>
#11
leeqihero2016-06-15 21:27
【程序6】
题目:用*号输出字母C的图案。
1.程序分析:可先用'*'号在纸上写出字母C,再分行输出。
#12
leeqihero2016-06-15 21:32
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="*****";
显示+="<br />*";
显示+="<br />*";
显示+="<br />*";
显示+="<br />*";
显示+="<br />*****";
document.body.innerHTML=显示;
</script>
</html>
#13
leeqihero2016-06-16 08:50
题目:输出9*9口诀。
1.程序分析:分行与列考虑,共9行9列,i控制行,j控制列。
#14
leeqihero2016-06-16 08:55
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
for(var i=1;i<10;i++){
    for(var j=1;j<i+1;j++){
        显示+=i+"*"+j+"="+i*j+" ";
    }
    显示+="<br />";
}
document.body.innerHTML=显示;
</script>
</html>
#15
leeqihero2016-06-16 11:25
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
Array.prototype.填充=function(填充次数){
    var a=[];
    for(var i=0;i<填充次数;i++){
        for(var j=0;j<this.length;j++){
            a.push(this[j]);
        }
    }
    return a;
}
var 显示="";
var 数组=["▉","&nbsp;&nbsp;"];
var a=数组.填充(4);
数组.reverse();
var b=数组.填充(4);
a=a.concat(b);
var 象棋格子序列=a.填充(4);
for (var i=0;i<象棋格子序列.length;i++){
    显示+=象棋格子序列[i];
    if(i%8==7)显示+="<br />";
}
document.body.innerHTML=显示;
</script>
</html>
#16
leeqihero2016-06-16 11:28
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月
    后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21....
#17
leeqihero2016-06-16 11:39
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var f1,f2;
f1=f2=1;
for(var i=1;i<=20;i++){
    f1+=f2;
    f2+=f1;
    显示+=f1+","+f2+",";
    if(i%2==0)显示+="<br />";
}
document.body.innerHTML=显示;
</script>
</html>
#18
leeqihero2016-06-16 11:40
题目:判断101-200之间有多少个素数,并输出所有素数。
1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
       则表明此数不是素数,反之是素数。
#19
leeqihero2016-06-16 11:59
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 素数=true;
var 显示="";
var a=prompt("最小数字");
var b=prompt("最大数字");
for(var i=a;i<=b;i++){
    var n=Math.sqrt(i+1);
    for(var j=2;j<=n;j++){
        if(i%j==0){
            素数=false;
            break;
        }
    }
    if(素数)显示+=i+",";
    素数=true;
}
document.body.innerHTML=显示;
</script>
</html>
#20
leeqihero2016-06-16 12:00
题目:打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数
    本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
#21
leeqihero2016-06-16 12:06
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
for(var i=100;i<1000;i++){
    var 百位=i/100>>0;
    var 十位=(i/10>>0)%10;
    var 个位=i%10;
    if(i==(百位*百位*百位+十位*十位*十位+个位*个位*个位))显示+=i+",";
}
document.body.innerHTML=显示;
</script>
</html>
#22
leeqihero2016-06-16 12:45
题目:将一个正整数分解质因数。例如:输入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的值,重复执行第一步。
#23
leeqihero2016-06-16 12:45
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var n=prompt("数字");
for(var i=2;i<=n;i++){
    while(n!=i){
        if(n%i==0){
            显示+=i+"*";
            n/=i;
        }
        else break;
    }
    if (n==i)显示+=i;
}
document.body.innerHTML=显示;
</script>
</html>
#24
leeqihero2016-06-16 12:46
题目:利用条件运算符的嵌套来完成此题:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,
    60分以下的用C表示。
1.程序分析:(a>b)?a:b这是条件运算符的基本例子。
#25
leeqihero2016-06-16 12:49
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var n=prompt("成绩");
显示+=n>=90?"A":(n>=60?"B":"C");
document.body.innerHTML=显示;
</script>
</html>
#26
leeqihero2016-06-16 12:49
题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
1.程序分析:利用辗除法。
#27
leeqihero2016-06-16 13:00
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var a1=prompt("第一个数");
var b1=prompt("第二个数");
var a=Math.max(a1,b1);
var b=Math.min(a1,b1);
while(b!=0){
    var temp=a%b;
    a=b;
    b=temp;
}
显示+="最大公约数:"+a+"<br />";
显示+="最小公倍数:"+a1*b1/a;
document.body.innerHTML=显示;
</script>
</html>
#28
leeqihero2016-06-16 13:00
题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
1.程序分析:利用while语句,条件为输入的字符不为'\n'.
#29
leeqihero2016-06-16 13:13
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var a=prompt("输入一个字符串");
var 英文=0,数字=0,空格=0,其他=0;
for(var i=0;i<a.length;i++){
    switch(true){
        case a[i]>='a'&&a[i]<='z'||a[i]>='A'&&a[i]<='Z':
        英文++;
        break;
        case a[i]>='0'&&a[i]<='9':
        数字++;
        break;
        case a[i]==' ':
        空格++;
        break;
        default:
        其他++;
        break;
    }
}
显示+=a+"<br />";
显示+="英文:"+英文+",数字:"+数字+",空格:"+空格+",其他:"+其他;
document.body.innerHTML=显示;
</script>
</html>
#30
leeqihero2016-06-16 13:15
题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
    共有5个数相加),几个数相加有键盘控制。
1.程序分析:关键是计算出每一项的值。
#31
leeqihero2016-06-16 13:24
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
var 显示="";
var a=prompt("输入一个数字");
var n=prompt("输入次数");
var sum=0;
var sum1="得到的数字:";
for(var j=0;j<n;j++){
    var 叠加=a;
    for(var i=0;i<j;i++)叠加+=a;
    sum1+=叠加+",";
    sum+=叠加*1;
}
显示+=sum1+"<br />";
显示+="结果是:"+sum;
document.body.innerHTML=显示;
</script>
</html>
#32
leeqihero2016-06-16 13:25
题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程
    找出1000以内的所有完数。
#33
leeqihero2016-06-16 14:35
<html>
<head>
<meta charset="utf-8">
</head>
<body>
</body>
<script>
function 完全数(N){
    var 完全数组=[];
    for(var i=1;i<=N;i++){
        var sum=0;
        for(var j=1;j<=i/2;j++){
            if(i%j==0)sum+=j;
        }
        if(sum==i)完全数组.push(i);
    }
    return 完全数组;
}
var 显示="";
显示+=完全数(1000);
document.body.innerHTML=显示;
</script>
</html>
#34
leeqihero2016-06-16 14:37
题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在
    第10次落地时,共经过多少米?第10次反弹多高?
#35
龙神2016-06-16 15:31
var height = 100, distance = 0;
//第一次落下:
height = 50;
distance = 100;
//第二到第十次
for (var i = 2; i<=10; i++) {
    distance += 2*height;
    height /= 2;
}
console.log(distance);
console.log(height);
#36
leeqihero2016-06-16 18:17
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
</body>
<script>
var 显示="";
var n=prompt("小球第几次弹起");
var 高度=100,路程=0;
for (var i=1;i<=n;i++){
    高度/=2;
    路程+=高度*3;
}
显示+="高度:"+高度+",路程:"+路程;
document.body.innerHTML=显示;
</script>
</html
#37
leeqihero2016-06-16 18:20
题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
    第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下
    的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
1.程序分析:采取逆向思维的方法,从后往前推断。
#38
小白老黑2016-12-24 16:07
好棒。文科男羡慕中。。。
#39
独善其身xjs2017-03-20 12:56
这个帖子不错啊,题目都蛮不错的。提高逻辑思维!!
#40
淡墨悦儿2017-08-07 18:46
1