一些编程题,记录
Posted punisher999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些编程题,记录相关的知识,希望对你有一定的参考价值。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>title</title> </head> <body> <img src="" onclick="prev()" alt=""> <script> /* * 一、 实现 fizzBuzz 函数,参数 num 与返回值的关系如下: * 1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz * 2、如果 num 能被 3 整除,返回字符串 fizz * 3、如果 num 能被 5 整除,返回字符串 buzz * 4、如果参数为空或者不是 Number 类型,返回 false * 5、其余情况,返回参数 num * * // function fizzbuzz(num) { if (num===null || typeof num!==‘number‘) { return false } else if (num % 3 === 0 && num % 5 === 0) { return ‘fizzbuzz‘ } else if (num % 3 === 0) { return ‘fizz‘ } else if (num % 5 === 0) { return ‘buzz‘ } else { return num } } console.log(fizzbuzz(‘ ‘)) */ /* * 二、给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 * 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 * 示例: * 给定 * nums = [2, 7, 11, 15], * target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 * 所以返回 [0, 1] * * var arr = [2, 7,45,454, 11, 15]; var target = 17; for(var i=0;i<arr.length;i++){ for (var j=1;j<arr.length;j++){ if (target ===arr[i]+arr[j] &&arr[i]!==arr[j]){ console.log([i,j]) } } }*/ /* * 三、大马驮2石粮食, x=2 * 中马驮1石粮食, y=1 * 两头小马驮一石粮食, z=1/2 2x + * 要用100匹马, * 驮100石粮食, * 该如何调配? * var a=0; for (var x = 1; x < 100; x++) { for (var y = 1; y < 100; y++) { for (var z =1; z < 100; z++) { if (2*x+y+(1/2) * z===100 && x + y + z === 100) { a++; console.log(x, y, z ,a+‘种‘); } } } }*/ /* * 四、小明单位发了100元的购物卡, * 小明到超市买三类洗化用品, * 洗发水(15元), * 香皂(2元), * 牙刷(5元)。 * 要把100元整好花掉, * 可如有哪些购买结合? * * * var a=0; for (var x=1;x<100;x++){ for (var y=1;y<100;y++){ for (var z=1;z<100;z++){ if (15*x+2*y+5*z===100){ a++ console.log(x,y,z,a+‘种‘) } } } }* */ /* * 五、某侦察队接到一项紧急任务, * 要求在A、B、C、D、E、F六个队员中尽可能多地挑若干人 * ,但有以下限制条件: * A和B两人中至少去一人; 0 1 * A和D不能一起去; * A、E和F三人中要派两人去; * B和C都去或都不去; * C和D两人中去一个; * 若D不去,则E也不去。 * 问应当让哪几 个人去? * * for (var a=0;a<=1;a++){ for (var b=0;b<=1;b++){ for (var c=0;c<=1;c++){ for (var d=0;d<=1;d++){ for (var e=0;e<=1;e++){ for (var f=0;f<=1;f++){ if (a+b>=1&&a+d!==2&&a+e+f===2&&b===c&&c+d===1&&((d===0&&e===0)||(d===1&&d+e>=1))){ console.log(a,b,c,d,e,f) } } } } } } }*/ /*六、五个小朋友排成一队。 5 问第一个多大了,第一个说比第二个大两岁, a b c d e a>b a-b=2 a=17 问第二个,第二个说比 第三个大三岁,以此类推。 b>c b-c=3 c=12 b=15 问第五个小朋友几岁了, c-d=4 d-e=5 e=3 d=8 第五个小朋友说3岁了。 e=3 问第一个小朋友几岁? console.log(a) var a=3; for (var i=5;i>1;i--){ a+=i } console.log(a) */ /*七、凑钱1,2,5凑20元钱有多少种可能 for (var a=1;a<20;a++){ for (var b=1;b<20;b++){ for (var c=1;c<20;c++){ if (a+2*b+5*c===20){ console.log(a,b,c) } } } }*/ /*八、公鸡5元每只, 母鸡3元每只, 小鸡3只1元, 100元买一百只鸡多少种办法 var f=0; for (var a=1;a<100;a++){ for (var b=1;b<100;b++){ for (var c=1;c<100;c++){ if (5*a+3*b+(1/3)*c===100 &&a+b+c===100){ f++; console.log(a,b,c,f+‘种‘) } } } }*/ /* * 九、有一个卡车司机肇事后想逃跑, 但是被三个人看见其车牌号码,但是没有看全。 科比说:车牌的前两位是一样的; 乔丹说:车牌的后两位是一样的,但是与前两位不一样; 詹姆斯说:车牌是一个数字的平方, 请编写一个程序计算车辆号牌是多少(车辆号牌是4位数)。 * **/ /* for (var a = 0; a < 10; a++) { for (var b =0; b < 10; b++) { for (var c =0; c < 10; c++) { for (var d =0; d < 10; d++) { if (a === b && c === d && c !== a ){ for (var i=1;i<100;i++){ if (a*1000+b*100+c*10+d===i*i){ console.log(a*1000+b*100+c*10+d) } } } } } } } for(i=1000;i<10000;i++){ var gg=i%10,ss=Math.floor(i/10%10),bb=Math.floor(i/100%10),qq=Math.floor(i/1000); for (var j=1;j<i;j++){ if (j===i*i&&gg === ss && bb ===qq&& gg !== bb){ console.log(i) } } }*/ /* * 十、编写一个十六进制转十进制的方法 * 十进制 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 * 十六进 0 1 2 3 4 5 6 7 8 9 a b c d e f * function fn(par) { var arr = par.split(‘‘);//[2,a,f] var sum = 0; for (var i = 0; i < arr.length; i++) { switch (arr[i]) { case ‘a‘: arr[i] = 10; break; case ‘b‘: arr[i] = 11; break; case ‘c‘: arr[i] = 12; break; case ‘d‘: arr[i] = 13; break; case ‘e‘: arr[i] = 14; break; case ‘f‘: arr[i] = 15; break; } // //arr = String(par);//将m转换成字符串并生成数组 //var x = arr.length; } //for (var j = 0; j <arr.length; j++) { // sum += arr[j]* Math.pow(16,arr.length-1-j ); //} for (var j = 0; j <arr.length; j++) { sum += arr[j]* fun(arr.length-1-j ); } return console.log(sum) } console.log(fn(‘2af‘)); function fun(n) { if (n<0){ return 1/16; } return fun(n-1)*16 } /*function num(a,b){ document.write(Number(sum)); } console.log(num(1455,12)); function hexToDec(hex) { var result = 0, digitValue; // hex = hex.toLowerCase(); for (var i = 0; i < hex.length; i++) { digitValue = ‘0123456789abcdef‘.indexOf(hex[i]); result = result * 16 + digitValue; } return result; } console.log(hexToDec(‘84fa‘)); //5 * 16 *16 +10*16 +15 // 8*16*16*16+4*16*16+15*16+10 //120 1*10*10 + 2*10 + 0 */ /* *十一、大家都知道,男大当婚,女大当嫁。 * 那么女方家长要嫁女儿,当然要提出一定的条件: * 高:180cm以上; 富:1000万以上; x=180 y=1000 * 帅:500以上;如果这三个条件同时满足, z=500 * 则:‘我一定要嫁给他’如果三个条件只符合两个, * 则:‘虽不是最好,但也还可以’如果三个条件只满足一个, * 则:‘嫁吧,比上不足,比下有余。’ * 如果三个条件都不满足,则:‘宁死不嫁!’ * */ function fun(h,f,s) { if (h>180&&f>1000&&s>500){ return ‘我一定要嫁给他‘ }else if (h>180||f>1000|| s>500){ return ‘嫁吧,比上不足,比下有余。‘ }else if ((h>180&&f>1000)|| (h>180&&s>500)|| (f>1000&&s>500)){ return ‘虽不是最好,但也还可以‘ }else{ return ‘宁死不嫁‘ } } console.log(fun(45645,5464,45646)); /* * 十二、东方航空从北京飞往马尔代夫的机票原价为4000元, * 4到10月份为旺季 其他月份为淡季, * 旺季时候头等舱打9折,经济舱打7.5折; * 淡季头等舱打6折, 经济舱打3折。 * 从页面输入出行的月份 * 和选择的舱型 * 计算出机票价格 * var num = prompt(‘输入一个月份‘); var jc = prompt(‘输入机舱类型‘); var b = 4000;*/ /* if (num >= 4 && num <= 10) { console.log ((jc === ‘头等舱‘)? (‘头等舱‘ + b * 0.9 + ‘元‘): (jc === ‘经济舱‘)?(‘经济舱‘ + b * 0.75 + ‘元‘):‘‘) /!* if (jc === ‘头等舱‘) { console.log(‘头等舱‘ + b * 0.9 + ‘元‘); } else if (jc === ‘经济舱‘) { console.log(‘经济舱‘ + b * 0.75 + ‘元‘) }*!/ } else { console.log( (jc === ‘头等舱‘)?(‘头等舱‘ + b * 0.6 + ‘元‘): (jc === ‘经济舱‘)? (‘经济舱‘ + b * 0.3 + ‘元‘):‘‘) /!*if (jc === ‘头等舱‘) { console.log(‘头等舱‘ + b * 0.6 + ‘元‘); } else if (jc === ‘经济舱‘) { console.log(‘经济舱‘ + b * 0.3 + ‘元‘) }*!/ } console.log ( (num >= 4 && num <= 10)? ((jc === ‘头等舱‘)? (‘头等舱‘ + b * 0.9 + ‘元‘): (‘经b济舱‘ + b * 0.75 + ‘元‘)): ((jc === ‘头等舱‘)?(‘头等舱‘ + b * 0.6 + ‘元‘): (‘经济舱‘ + b * 0.3 + ‘元‘)) ); console.log ( (num >= 4 && num <= 10)? (b*(jc === ‘头等舱‘)? 0.9:0.75): (b*(jc === ‘头等舱‘)? 0.6:0.3) );*/ /*十七、求和:实现1!+2!+3!+4!+5! * * function sum(n) { if (n<=1){ return 1 } return sum(n-1)*n } console.log(sum(5)); var z=0; for (var i=1;i<6;i++){ z+=sum(i) }console.log(z)*/ /*十六、求和,实现 1+(1+2)+(1+2+3)+(1+2+3+4)+(1+2+3+4+5)=35 function fn(n) { if (n<=1){ return 1 } return fn(n-1)+n } var sum=0; for (var i=1;i<6;i++){ sum+=fn(i) } console.log(sum)*/ /*十九、输入一个数字,然后判断是否为正整数, 如果不是,提示重新输入; 如果是,将该数字左右反转, 然后输出 (例如:12345,翻转之后为54321) function fn() { var num = prompt(‘输入一个数字‘); var a = parseInt(num % 10); var b = parseInt(num / 10 % 10); var c = parseInt(num / 100 % 10); var d = parseInt(num / 1000 % 10); var e = parseInt(num / 10000); var arr = num.split(‘‘); var boo=true; for (var i = 0; i < arr, length; i++) { if (arr[i] === ‘.‘) { alert(‘重新输入正整数‘); boo = false; } } if (num > 0 && boo) { alert(‘正整数‘); num.length === 0 ? console.log(a) : num.length === 1 ? console.log(a, b) : num.length === 2 ? console.log(a, b, c) : num.length === 3 ? console.log(a, b, c, d) : num.length === 4 ? console.log(a, b, c, d, e) : ‘‘ } } fn()*/ /*二十、输入某年某月某日,判断这一天是这一年的第几天? for (var i=1;i<365;i++){ } var day,month,year,sum,leap; year=Number(prompt(‘输入年‘)); month=Number(prompt(‘输入月‘)); day=Number(prompt(‘输入日‘)); switch(month){ case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:console.log(‘输入错误,请输入1-12之间的数‘);break; } sum+=day; if(year%400===0||(year%4===0&&year%100!==0)){ leap=1; }else{ leap=0; } if(leap===1&&month===2){ sum++; } console.log(sum);*/ /*var year = Number(prompt()); var month = Number(prompt()); var days = Number(prompt()); var is31 = [1, 3, 5, 7, 8, 10, 12]; var is30 = [4, 6, 9, 11]; var count1 = 0; var count2 = 0; var eryue = 28; if (year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)) { eryue = 29 } for (var i = 0; i < is31.length; i++) { if (is31[i] < month) { count1++; } } for (var j = 0; j < is31.length; j++) { if (is30[j] < month) { count2++; } } console.log(‘今天是‘ + year + ‘年第‘ + (month > 2 ? (count1 * 31 + count2 * 30 + eryue + days) : (count1 * 31 + count2 * 30 + days)) + ‘天‘)*/ /*十三、输入一个时间, 输出这个时间的下一秒如: 输入:23:59:59 输出: 0: 0: 0 function num(n){ if(n<10){ return ‘0‘+n } else { return ‘‘+n } } var hh = prompt(‘输入一个时间‘) * 1; var ff = prompt(‘输入一个时间‘) * 1; var ss = prompt(‘输入一个时间‘) * 1; ss++; if (ss===60){ ss=0; ff++; if (ff===60){ ff=0; hh++; if (hh===24){ hh=0 } } } console.log(num(hh)+‘:‘+num(ff)+‘:‘+num(ss))*/ /*十四、已知两个矩形,宽高分别是200*200,400*400, 甲矩形的坐标是x1,y1. 乙矩形的坐标是x2,y2. 写出判断条件两个矩形是否相碰撞 var x1=200,y1=200,x2=400,y2=400; if (){ console.log(‘会‘) }*/ var x1=200;//自己随意定义坐标 var x2=200; var y1=400; var y2=400; var bool=true;//先定义一个布尔值为false if(x1>=x2 && x1<=x2+400 && y1>=y2 && y1<=y2+400){ bool=false; }else if(x1+200>=x2 && x1+200<=x2+400 && y1>=y2 && y1<=y2+400){ bool=false; }else if (x1>=x2 && x1<=x2+400 && y1+200>=y2 && y1+200<=y2+400){ bool=false; }else if(x1+200>=x2 && x1+200<=x2+400 && y1+200>=y2 && y1+200<=y2+400){ bool=false; } if(bool){ document.write("碰撞了"); }else { document.write("没有碰撞"); } </script> </body> </html>
仅供参考哦!!!
以上是关于一些编程题,记录的主要内容,如果未能解决你的问题,请参考以下文章