程序员必做50题(16-30)
程序员必做50题(1-15)——————程序员必做50题(31-45)
16.求s=a+aa+aaa+aaa+…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。
function add(a,b){
var x = '',s = 0;
for(var i=0;i<b;i++){
x += a;
var z = Number(x);
s += z
}
return s;
}
console.log(add(2,5));
17.一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
for(var i=1;;i++){
var x=0;
for(var j=1;j<i;j++){
x += j;
}
if(x>=1000){
break;
}else if(i<=x){
console.log(x)
}
}
18.一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
var a = 0,x = 0;
for(var i=100;x<3;){
x++;
a +=i;
i/=2
}
console.log('第 '+x+' 次反弹高度是:'+i+'米'+'\n'+'第 '+x+' 次落地共经过了:'+(((a-100)*2)+100)+'米');
19.猴子吃桃问题:猴子第一天摘下若干个桃子, 当即吃了一半,还不瘾,又多吃了一个第二天早.上又将剩下的桃子吃掉-一半,又多吃了一个。以后每天早上都吃了前一一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一一个桃子了。求第一天共摘了多少。
var a=1;
for(var i=1;i<10;i++){
a=(a+1)*2;
}
console.log(a);
20.两个乒乓球队进行比赛,各出三人。甲队为ab,c三人,乙队为xy;z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
var X = 'x'.charCodeAt();
var Y = 'y'.charCodeAt();
var Z = 'z'.charCodeAt();
for (var i = X; i <= Z; i++) {
for (var j = X; j <= Z; j++) {
for (var k = X; k <= Z; k++) {
if (i == X || j == i || k == X || k == Z || k == i ||k == j) {
continue;
}
console.log('a 的对手是 ' + String.fromCharCode(i));
console.log('b 的对手是 ' + String.fromCharCode(j));
console.log('c 的对手是 ' + String.fromCharCode(k));
}
}
}
21.有一分数序列: 2/1, 3/2, 5/3, 8/5,13/8, 21/13… 求出这个数列的前20项之和。
var a = 1,b = 2;
for(var i=1;i<=20;i++){
var c = a;
a = b;
b = c+b;
}
console.log(b)
22.求1+21+3+…+20!的和。
var he = 0;
for(var i=1;i<=20;i++){
var a = 1;
for(var j=1;j<=i;j++){
a *= j
}
he += a
}
console.log(he)
23.利用递归方法求5!。
function a(x){
if(x===1){
return 1;
}
return x*a(x-1);
}
console.log(a(5))
24.利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。
function versa(x){
if(x.length<=1){
return x;
}else{
return x.charAt(x.length-1) + versa(x.slice(0,x.length-1));
}
}
console.log(versa('abcdef'))
function versa(x){
var ss = '';
for(var i=x.length-1;i>=0;i--){
ss += x[i]
}
return ss;
}
console.log(versa('abcdef'))
25.有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?
var a = 10;
for(var i=1;i<5;i++){
a += 2;
}
console.log('第 '+i+' 个人 '+a+' 岁');
26.给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。
function num(x){
var a = x.toString();
var s = a.length-1,e = '';
for(var i=0;s>=0;s--){
e += a[s];
i++;
}
console.log('是一个 '+i+' 位数,逆序打印:'+e)
}
num(147258369);
27.题目: 一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。
function palindromic(x){
var a = x.toString();
var g = parseInt(a.length/2)
for(var i=0;i<g;){
if(a[i]!==a[a.length-1-i]){
return console.log(x+' 不是文数');
}
i++;
}
return console.log(x+' 是文数')
}
palindromic(1235321)
28.请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样, 则继续判断第二个字母。
var a = prompt('请输入星期几的第一个字母:');
var x = a.toLocaleLowerCase();
switch (x) {
case 'm':
alert('星期一');
break;
case 't':
var aa = prompt('请输入第二个字母:');
if(aa==='u'){
alert('星期二');
break;
}else if(aa==='h'){
alert('星期四');
}
case 'w':
alert('星期三');
break;
case 'f':
alert('星期五');
break;
case 's':
var aa = prompt('请输入第二个字母');
if(aa==='a'){
alert('星期六');
break;
}else if(aa==='u'){
alert('星期日');
break;
}
default:
alert('没有此日期');
break;
}
29.对10个数进行排序。
var a = [3,45,50,6,88]
for(var i=0;i<a.length;i++){
for(var j=0;j<a.length;j++){
if(a[i]>a[j]){
var x = a[i];
a[i] = a[j];
a[j] = x;
}
}
}
console.log(a);
30.求一个3*3矩阵对角线元素这和。
var a = [[12,45,78],
[23,56,89],
[41,52,63]];
console.log(a[0][0]+a[1][1]+a[2][2]);
console.log(a[0][2]+a[1][1]+a[2][0]);
作者自述
新手上路,望各位大佬指教-----------
如有相关资料、视屏给作者看看可否?后续的题以后更新-----------------------
autchan@163.com----------------------
欢迎提各种意见----------------------------------------------------------------------------------------------------------------------- 学WEB前端的第15天