首页 > 编程语言 >JavaScript习题之算法设计题

JavaScript习题之算法设计题

时间:2022-12-05 18:25:14浏览次数:44  
标签:arr console log JavaScript else 算法 num var 习题

// 1.九九乘法表

for (var i = 1; i < 10; i++) {
document.write("<span>");
for (var j = 1; j <= i; j++) {
if (j % 2 == 0) {
document.write("<button style='width:60px;background-color: #f2f2f2; '>" + j + "×" + i + "=" + i * j + " " + "</button>");
} else {
document.write("<button style='width:60px;background-color: aqua; '>" + j + "×" + i + "=" + i * j + " " + "</button>");
}
}
document.write("</span>");
document.write("<br>");
}

// 2.使用if判断实现:用户输入年份,判断显示该年是平年还是闰年

var year = Number(prompt("请输入年份"));
if (year > 0&& Number(num) == parseInt(Number(num))) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
alert("闰年");
} else {
alert("平年");
}
} else {
alert("输入错误");
}

// 3.使用for循环实现:请用户输入学生的人数,然后依次输入每一位同学的成绩。 输入完毕之后,将总成绩和平均成绩在控制台输出

var num = prompt("请输入学生人数");
var sum = 0;
if (Number(num) > 0&& Number(num) == parseInt(Number(num))) {
for (var i = 1; i <= num; i++) {
var score = Number(prompt("请输入分数"));
var sum = sum + score;
}
document.write("总成绩:" + sum + "平均成绩:" + sum / num);
} else {
alert("error");
}

// 4.使用while循环实现用户随机输入一个正整数,显示这个正整数各个位数之和

var num = prompt("请输入正整数:");
var i = 0;
var sum = 0;
if (Number(num) > 0 && Number(num) == parseInt(Number(num))) {
while (i <= num.length - 1) {
sum += Number(num[i]);
i++;
}
document.write(sum);
} else {
alert("error");
}

var num = Number(prompt("请输入正整数:"));
var sum = 0;
if (num > 0 && num == parseInt(num)) {
while (num != 0) {
sum += num % 10;
num = parseInt(num / 10);
}
alert("各位数之和:" + sum);
} else {
alert("error");
}


// 5.使用do…while循环实现输出询问:“今天你有认真学习吗?输入yes或no”,如果输入"yes",则弹出"你真是个好孩子!~",如果输入"no",则继续询问

var str = prompt("今天你有认真学习吗?输入yes或no");
if (str !== "yes" && str !== "no") {
alert("error");
} else {
do {
str = prompt("今天你有认真学习吗?输入yes或no");
if (str === "yes") {
alert("你真是个好孩子!~");
break;
}
} while (str === "no");
}

do {
var str = prompt("今天你有认真学习吗?输入yes或no");
if (str === "yes") {
alert("你真是个好孩子!~");
break;
}
} while (1);

// 求数组最大值

var arr = [22, 5, 7, 18, 66];
var max = arr[0];
for (var i = 0; i < arr.length; i++) {
var max = arr[i] >= max ? arr[i] : max;
}
console.log(max);

// 翻转数组

var arr = [22, 5, 7, 'x', 66,33];
for (var i = 0; i < arr.length / 2; i++) {
[arr[i], arr[arr.length - i - 1]] = [arr[arr.length - i - 1], arr[i]];
}
console.log(arr);

// 循环输入存入数组

var arr = [];
var s = prompt("请输入");
while (s !== "" && s !== null) {
arr.push(s);
s = prompt("请输入");
}
console.log(arr);

// 冒泡排序

var arr = [22, 5, 7, 18, 66];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
console.log(arr);

// 比较排序

var arr = [22, 5, 7, 18, 66];
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length - 1; j++) {
if (arr[i] > arr[j]) {
[arr[i], arr[j]] = [arr[j], arr[i]];
}
}
}
console.log(arr);

// 数组去重

var arr = ['a', 'b', 'c', 'a', 'b', 'a'];
var newArr = [];
for (var i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i]);
}
}
console.log(newArr);

// 统计个数

var arr = ['a', 'b', 'c', 'a', 'b', 'a'];
var newArr = {};
for (var i = 0; i < arr.length; i++) {
newArr[arr[i]] = (newArr[arr[i]] + 1) || 1;
}
console.log(newArr);

// 去除指定值

var arr = [22, 5, 7, 18, 66];
var carr = [5, 4];
for (var i = 0; i < arr.length; i++) {
for (var j = 0; j < carr.length; j++) {
if (arr[i] == carr[j]) {
arr.splice(i, 1);
i--;
}
}
}
console.log(arr);

// 找出两数组不同元素

var arr1 = [0, 1, 1, 2, 3];
var arr2 = [0, 4, 0];
var newArr = arr1.filter(x => arr2.indexOf(x) == -1).concat(arr2.filter(x => arr1.indexOf(x) == -1));
console.log(newArr);


//此方法只能在两个数组内都没有重复元素时使用
var arr1 = [0, 1, 2, 3, 4, 5];
var arr2 = [0, 4, 6, 1, 3, 9];
var newArr = arr1.concat(arr2).filter(function (v, i, arr) {
return arr.indexOf(v) === arr.lastIndexOf(v);
});
console.log(newArr);

// 多个数组找最大值拼成新数组

var arr1 = [0, 1, 2, 3, 4, 5];
var arr2 = [0, 4, 6, 1, 3, 9];
var array = [arr1, arr2];
var newArr = [];
for (var i in array) {
newArr.push(array[i].sort(function (a, b) {
return b - a;
})[0]);
}
console.log(newArr);

two
1.自定义一个函数,用来实现两个数字的计算,并返回结果

function add(num1, operator, num2) {
return eval(num1 + operator + num2);
}
console.log(add(1, '*', 2));


function computed(num1, operator, num2) {
if (typeof num1 !== 'number' || typeof num2 != 'number') {
return "输入为非数字";
} else {
if (operator == '+') {
return num1 + num2;
} else if (operator == '-') {
return num1 - num2;
} else if (operator == '*') {
returnud num1 * num2;
} else if (operator == '/') {
return num1 / num2;
} else if (operator == '%') {
return num1 % num2;
} else {
return "输入符号错误";
}
}
}
console.log(computed(3, '+', 4));

2.自定义函数,实现数组中join()效果

function myJoin(arr, sign) {
var str = String(arr[0]);
for (var i = 1; i < arr.length; i++) {
str += sign + arr[i];
}
return str;
}
console.log(myJoin([2, 3, 4], ','));

3.自定义函数,实现数组中concat()效果I

function myConcat(arr1, arr2) {
console.log(typeof arr1);
if (typeof arr1 != typeof arr2) {
return "参数类型不一致";
} else if (Array.isArray(arr1)) {
for (var i = 0; i < arr2.length; i++) {
arr1.push(arr2[i]);
}
return arr1;
} else if (typeof arr1 == 'string') {
return arr1 + "" + arr2;
} else {
return "输入不符合要求";
}
}
console.log(myConcat('sdff2234', 'sdfgsd'));

 

1.打印出100以内的素数
for(var i =2; i <=100; i++){
程序员的思维⽅式,假设型思维
//
我假设这个数就是素数,然后再去判断⼀下,它还能不能被其它数整除
//
如果还有其它数可以整除掉,那么假设就不成⽴了,这个数就不素数了
//
在这⾥给它⼀个标志,⽤于标明这个数就是素数
//
第⼀步:
就代表这个数是素数
//
true
var flag =true;
第⼆步:开始反推,看还有没有其它的数可以被带整除掉
//
for(var j =2; j < i; j++){
if(i % j ==0){
如果这个代码成⽴了,就说明还有其它的数可以整除掉
//
就说明这个数不是素数了
//
i就推翻了之前的假设
//
flag =false;
只要有⼀个数可以被整除就推翻了之前的假设,后⾯的就不⽤再试了
//
所以这个循环就可以结束掉了
//
break;
}
}
如果经过上⾯的反推以后,
仍然是
就说明我们的假设成⽴了
//
flag
true,
if(flag ==true){
console.log(i);
}

}

 

标签:arr,console,log,JavaScript,else,算法,num,var,习题
From: https://www.cnblogs.com/suishou/p/16953079.html

相关文章

  • JavaScript习题之填空题
    1.JavaScript有两种引⽤数据类型:__数组___、__对象__。2.Javascript通过__setTimeout___延迟指定时间后,去执⾏某程序。3.Javascript⾥String对象通过__indexOf__⽅法取......
  • JavaScript习题之判断题
    1.JavaScript是Java语言的脚本形式。()2.JavaScript中的方法名不区分大小写。()3.JavaScript语句结束时的分号可以省略。()4.通过外链式引入JavaScript时,可以省略</scr......
  • JavaScript习题之简答题
    1.分别描述HTML、CSS、JS在页面组成中的作用。HTML是超文本标记语言,是用来描述网页的语言,定义网页的结构,内容可以包含文字、图片、视频等。CSS是层叠样式表,定义如何显示HT......
  • 【A*路径搜索算法】基于A星的最优避障路径搜索算法的MATLAB仿真+GUI界面
    1.软件版本MATLAB2021a2.基本原理A算法是启发式算法重要的一种,主要是用于在两点之间选择一个最优路径,而A的实现也是通过一个估值函数F=G+HG表示该点到起始点位所需要......
  • JavaScript习题之选择题
    console.log((2==true)+1)会弹出AtrueBfalseC1D2正确答案:C2==true为假,此时值为0 在JS中,“1555”+3的运行结果是A1558B1552C15553D1553正确答案:C解析:155......
  • 推荐 10个非常好用的 JavaScript 动画库!!!
    1.Tween.jsTweenJS 是一个简单的 JavaScript 补间动画库。能够很好的和 EaselJS 库集成,但也不依赖或特定于它。它支持渐变的数字对象属性和 CSS 样式属性。AP......
  • 美颜SDK滤镜功能有哪些常用的滤镜算法
    “美颜滤镜”,可以说是美颜SDK中大家最常用到的一个功能,几乎所有的主播和个人用户都曾经使用过此功能。但是,如果要追溯滤镜的发展史,那得把目光转向至很久之前。最开始的时候,......
  • javaScript概述
    目录JS简介JS基础变量与常量基本数据类型运算符流程控制函数内置对象JS简介全称JavaScript但是与Java一毛钱关系都没有之所以这么叫是为了蹭Java的热度它是一门前端工......
  • JavaScript深浅拷贝
    基本类型&引用类型ECMAScript中的数据类型可分为两种:基本类型:undefined,null,Boolean,String,Number,Symbol引用类型:Object,Array,Date,Function,RegExp等不同类......
  • 回溯算法_N皇后
    Sub回溯算法_N皇后()n=8ReDimar(n)cnt=nqueen(n,0,ar,0)Debug.Print(cnt)EndSubPublicFunctionnqueen(n,row,res,count)If......