我的笔记—编程面试题大全

编程题:

1、提示用户输入一个三位数,若不是三位数,则提示用户输入有误;若是三位数,则判断该数能否被13整除

    let numbers = +prompt("请输入三位数字");
    if(isNaN(numbers) || numbers > 999 || numbers < 100){
        console.log("输入有误,请输入三位有效数字");
    }else{
        if(numbers % 13 == 0){
            console.log("能被13整除");
        }else{
            console.log("不能被13整除");
        }
    }

2、让用户输入一个成绩(1-100),判断这个成绩属于哪个范围并输出结果(A:90-100 B:70-89 C:60-69 D:40-59 E:0-39).

let score = +prompt("请输入分数(0~100)之间");

        if(isNaN(score) || score < 0 || score > 100){
            console.log("输入有误");
        }else if(score >= 90){
            console.log("成绩为A");
        }else if(score >= 70){
            console.log("成绩为B");
        }else if(score >= 60){
            console.log("成绩为C");
        }else if(score >= 40){
            console.log("成绩为D");
        }else{
            console.log("成绩为E");
        }

3、根据世界卫生组织推荐的计算方法,

男性的标准体重计算方法为(身高cm - 80) * 70%;
女性的标准体重计算方法为(身高cm - 70) * 60%;
标准体重正负10%为正常体重,低于标准体重的10%为偏瘦,高于标准体重的10%为偏胖;
编写程序,让用户输入性别,身高,体重,判断用户的健康状况。

let height = +prompt("请输入身高(cm)");
    let weight = +prompt("请输入体重(kg)");
    let gender = prompt("请输入性别(男/女)");
    let standardWeight;

    if(isNaN(height) || isNaN(weight) || gender !== "男" && gender !== "女"){
        console.log("输入有误");
    }else{  //标准体重计算方法
        if(gender == "男"){
            standardWeight = (height - 80) * 0.7;
        }else{
            standardWeight = (height - 70) * 0.6;
        }

        if(weight < standardWeight * 0.9){
            console.log("你的体重偏瘦,多吃点");
        }else if(weight > standardWeight * 1.1){
            console.log("您的体重偏胖,少吃点吧");
        }else{
            console.log("您的体重正常");
        }
    }

4、某理财公司推出一种理财服务,服务规则如下:

若用户的理财金额在50万元以下,则每年的收益按照4%计算
若用户的理财金额在50万元以上(包括50万),则每年的收益按照4.5%计算
若用户的理财金额超过200万元,除了理财收益以外,还要额外给予用户收益金额的10%
编写程序,让用户输入理财金额和理财年限,计算到期后的收益。

let money = prompt("请输入理财金额");
    let year = prompt("请输入理财年限");
    if (isNaN(money) || isNaN(year) || money < 0 || year < 0) {
        console.log("输入有误");
    } else {
        let rate = 0.04;
        if (money >= 500000) {
            rate = 0.045;
        }
        var earnings = money * year * rate;
        if (money >= 2000000) {
            
            earnings += earnings * 0.01;
        }

        console.log(`总收益为${earnings}`)
    }

5、编写一个用户和计算机猜拳的游戏,用户输入剪刀、石头、布与计算机的出拳进行比较,并判断胜负

let fist = prompt("请输入(剪刀、石头、布)");
    if (fist !== "剪刀" && fist != "石头" && fist != "布") {
        console.log("输入有误");
    } else {  //给计算机定义随机出拳
        let reg = Math.random();
        let PcFist;
        if (reg < 0.333) {
            PcFist = "剪刀";
        } else if (reg < 0.666) {
            PcFist = "石头";
        } else {
            PcFist = "布";
        }
        //判断胜负
        if (fist == "剪刀" && PcFist == "布" || fist == "石头" && PcFist == "剪刀" || fist == "布" && PcFist == "石头") {
            console.log(`你的出拳:${fist},电脑出拳:${PcFist}`);
            console.log("恭喜你 你赢了!");
        }else if(fist == PcFist){
            console.log(`你的出拳${fist},电脑出拳${PcFist}`);
            console.log("平局");
        }else{
            console.log(`你的出拳${fist},电脑出拳${PcFist}`);
            console.log("很遗憾,你输了!");
        }
    }

判断是不是一个质数 //条件:只能被1和自身整除 如2是质数 4不是质数

思路:从1循环到这个数,记录有多少个数能整除它,当数字为2的时候,判断为质数/素数

1、输入一个数字判断是否为质数

let num = +prompt("请输入一个数字");
    if(isNaN(num) || num < 0){
        console.log("输入错误");
    }else{
        let record = 0;   //记录整除数量
        for(let i = 0; i <= num; i++){
            if(num % i === 0){
                record++;
            }
        }
        if(record === 2){
            console.log("是质数");
        }else{
            console.log("不是质数");
        }
    }

2、打印从1-100之间的所有质数

for (let i = 1; i <= 100; i++) {
        let isFind = false;
        for (let j = 2; j < i - 1; j++) {
            if (i % j === 0) {
                isFind = true;
                break;
            }
        }
        if (i > 1 && !isFind) {  //isFind去掉1和它本身只计算中间的,来判断
        // isFind = true的时候打印的是非质数,取反表示打印的是质数
            console.log(i);
        }
    }

3、让用户输入星星的数量,然后输出对应数量的*

let num = +prompt("请输入一个数字");
    if(isNaN(num) || num < 0){
        console.log("输入错误");
    }else{
        for(let i = 0;i < num; i++){
            console.log("*");
        }
    }

4、输出一个3行5列的*;

for(let i = 1; i <= 3; i++){
        let str = "";
        for(let j = 1; j <= 5; j++){
            str += "*";
        }
        console.log(str);
    }

5、用*输出一个5行的直角三角形

let str = "";
    for(let i = 0; i < 5; i++){
        str += "*";
        console.log(str);
    }

6、用*输出一个5行的等腰三角形

let r = 5;
    for(let i = 1; i <= 5; i++){
        let str = "";
        for(let j = 1; j <= r - i; j++){
            str += " ";
        }
        for(let j = 1; j <= 2*i - 1; j++){
            str += "*";
        }
        console.log(str);
    }

7、输出99乘法表

for(let i = 1; i <= 9; i++){
    let str = "";
    for(let j = 1; j <= i; j++){
        str += `${j}*${i}=${j*i}\t`;
    }
    console.log(str);
}

8、斐波拉契数列:

//第一种:  缺点:当n较大时很快产生栈溢出,引发原因是“调用帧”过多
function Fibo(n){
        if(n == 1 || n == 2){
            return 1
        }
        return Fibo(n - 1) + Fibo(n - 2);
    }
    console.log(Fibo(9));

9、创建一个斐波拉契的迭代器

function createFeiboiterator(){
        let prev1,
            prev2,
            n = 1;
        return {
            next(){
                let value;
                if(n <= 2){
                    value = 1;
                }else{
                    value = prev1 + prev2;
                }
                let result={
                    value,
                    done:false,
                }
                prev1 = prev2;
                prev2 = result.value;
                n++;
                return result;
            }
        }
    }
    const iter = createFeiboiterator();

10、数组去重

const arr = [1,2,3,78,45,2,89,45,67,89,2,2,3];
const s = new Set(arr);
const result = [...s];  //es7展开运算符
console.log(result);

11、字符串去重

const str = "skefahesifisdaehrfsasdfasdfqwfjs23r23rswer";
const s = new Set(str);
const result = [...s].join("");
console.log(result);

12、两个数组的并集、交集、差集 (不能出现重复项) 得到的结果是一个新数组

const arr1 = [11,22,4,5,521,3,22,11,78];
const arr2 = [11,33,55,11,78,4,34,55];
const s = new Set(arr1.concat(arr2));
const result = [...s];
console.log("并集",result);

//还可用var nums = [...arr1,...arr2];合并两个数组

13、写一个方法,求一个字符串的长度,(提示:字符串有一个方法charCodeAt(),一个中文占两个字节,一个英文占一个字节。)

定义和用法:

charCodeAt()方法可以返回,指定位置的字符的Unicode编码。返回值是0-65535之间的整数。(当返回值是

<=255时,为英文,当返回值 > 255 时,为中文)

语法:stringObject.charCodeAt(index);

//第一种方法:常规方法
var str = "fhwsioe广东省fie";
function getStrLength(str){
    let count = 0;
    for(let i = 0; i < str.length; i++){
        if(str.charCodeAt(i) > 255){
            count += 2;
        }else{
            count ++;
        }
    }
    return count;
}
getStrLength(str);

//第二种:简写:
function getStrLength(target){
    var count = str.length;
    for(var i = 0; i < str.length; i++){
        if(str.charCodeAt(i) > 255){
            count++;
        }
    }
    return count;
}
getStrLength(str);

14、获取一个指定长度的随机数组成的数组

function getRandomNumbers(length){
      var arr = [];
      for(var i = 1; i <= length; i ++){
          arr.push(Math.random());
      }
      return arr;
 }

15、混合对象

const obj = {  //ES6方法
            name:"a",
            age:18,
            sex:"男"
        }
        const obj1 = {
            name:"b",
            address:"中国"
        }
        const obj2 = {
            ...obj,
            ...obj1
        }
        console.log(obj2); 

console.log(Object.assign(obj,obj1)); //ES7的方法 但是它会改变原数组obj
console.log(Object.assign({},obj,obj1));//前面传一个空对象,就不会改变obj

数组去重:1、将数组中的每一位当做对象的属性名

16、Object.assign(obj1,obj2) //混合两个对象

Object.assign({},obj1,obj2) //在前面加上一个对象,就不会改变原数组

17、找出元素 item 在给定数组 arr 中的位置

输出描述:

如果数组中存在 item,则返回元素在数组中的位置,否则返回 -1
function indexOf(arr,item){
    if(Array.prototype.indexOf){
        return arr.indexOf(item);
    }else{
        for(let i = 0; i < arr.length; i++){
            if(arr[i] === item){
                return i;
            }
        }
    }
    return -1;
}

18、利用解构的方法将两个数组的值进行交换

var arr = [1,2,3,3,5];
var arr1 = ["a","b","c","d"];
[arr,arr1] = [arr1,arr];
console.log(arr,arr1);

19、两种实现流式布局的方法

1、流式布局就是float

用align-content模拟流式布局 利用弹性盒子代替浮动产生流式布局

最理想的就是用弹性盒子写流式布局

2、利用float浮动,但是会产生浮动流,对后面元素产生影响

20、圣杯布局

圣杯布局:属于特殊的三栏布局,有header部分、footer部分、left部分、right部分,它们都有固定占有的百分比的,中间自适应

<div class="wrap">
        <div class="header"></div>
        <div class="contain">
            <div class="left"></div>
            <div class="content"></div>
            <div class="right"></div>
        </div>
        <div class="footer"></div>
    </div>

<style>
        .wrap{
            width:300px;
            height:300px;
            border:1px solid green;
            display:flex;
            flex-direction:column;
            resize:both;
            overflow:hidden;
        }
        .header, .footer{
            flex:0 0 20%;
            border:1px solid green;
        }
        .contain{
            flex:1 1 auto;
            display:flex;
        }
        .left, .right{
            flex:0 0 20%;
            border:1px solid green;
        }
        .content{
            flex:1 1 auto;
        }
    </style>

21、字符串取反

var str = 'abc123';
console.log(str.split("").reverse().join(''));	

22、判断是否为质数

function isPrime(n){
     if(n < 2){
         return false;
     }
     //判断从2到它本身减1之间有没有可以整除自身的,有的话就为false,没有则为true
     for(var i = 2; i < n - 1; i ++){
         if(n % i == 0 ){
             return false;
         }
     }
     return true;
 }

23、得到一个区间的随机整数


function getRandom(min,max){
    return Math.floor(Math.random() *(max - min + 1) + min);
}
getRandom(1,40);
-------------------------------
var arr = [1,2,3,4,5,6,7,8];
console.log(getRandom(0,arr.length));  //从数组中随机取一个

24、获取指定长度的随机数组成的数组

function getRandomNumbers(length){
   const arr = [];
   for(var i = 0; i < length; i++){
       arr.push(Math.random());
   }
   return arr;
}

25、提示用户输入数组的长度,以及数组每一项的值,然后输出该数组;

var len = +prompt("请输入数组的长度");
if(isNaN(len) || len < 0){
    console.log("输入错误");
}else{

    var arr = new Array(len);
    for(var i = 0; i<len; i++){
        arr[i] = prompt("请输入第"+(i + 1)+"项的值");
    }
    console.log(arr);
}

26、判断输入的年份是否是闰年

// 闰年:4年一闰,百年不闰,400年一闰
function isLeap(year){
	return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
}

谢谢您的访问!

更新中…

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值