JavaScript习题之算法设计题
// 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);
}
}
JavaScript习题之算法设计题的更多相关文章
- 数据结构作业——P53页算法设计题(7):原地逆转链表
一. 题目描述: 设计一个算法,将链表中所有结点的链接方向"原地"逆转,即要求仅利用原表的存储空间,换句话说,要求算法的空间复杂度为O(1). 二.算法设计 #include< ...
- 数据结构作业——P53算法设计题(6):设计一个算法,通过一趟遍历确定长度为n的单链表中值最大的结点
思路: 设单链表首个元素为最大值max 通过遍历元素,与最大值max作比较,将较大值附给max 输出最大值max 算法: /* *title:P53页程序设计第6题 *writer:weiyuexin ...
- C算法编程题(四)上三角
前言 上一篇<C算法编程题(三)画表格> 上几篇说的都是根据要求输出一些字符.图案等,今天就再说一个“上三角”,有点类似于第二篇说的正螺旋,输出的字符少了,但是逻辑稍微复杂了点. 程序描述 ...
- javascript数据结构与算法---列表
javascript数据结构与算法---列表 前言:在日常生活中,人们经常要使用列表,比如我们有时候要去购物时,为了购物时东西要买全,我们可以在去之前,列下要买的东西,这就要用的列表了,或者我们小时候 ...
- NOI题库分治算法刷题记录
今天晚自习机房刷题,有一道题最终WA掉两组,极其不爽,晚上回家补完作业欣然搞定它,特意来写篇博文来记录下 (最想吐槽的是这个叫做分治的分类,里面的题目真的需要分治吗...) 先来说下分治法 分治法的设 ...
- 最大子段和的DP算法设计及其效率测试
表情包形象取自番剧<猫咪日常> 那我也整一个 曾几何时,笔者是个对算法这个概念漠不关心的人,由衷地感觉它就是一种和奥数一样华而不实的存在,即便不使用任何算法的思想我一样能写出能跑的程序 直 ...
- 前端开发周报: CSS 布局方式方式与JavaScript数据结构和算法
前端开发周报:CSS 布局方式与JavaScript动画库 1.常见 CSS 布局方式详见: 一些常见的 CSS 布局方式梳理,涉及 Flex 布局.Grid 布局.圣杯布局.双飞翼布局等.http: ...
- 数据结构与算法实验题 6.1 s_sin’s bonus
数据结构与算法实验题 6.1 s_sin's bonus ★实验任务 正如你所知道的 s_sin 是一个非常贪玩的人 QAQ(如果你非常讨厌他请直接从第二段开 始看),并且令人感到非常遗憾的是,他是一 ...
- javascript数据结构与算法 零(前记+前言)
前记 这本书Data Structure and Algorithm with Javascript 我将其翻译成<< javascript 数据结构和算法>> 为什么这么翻译 ...
- JavaScript 数据结构与算法之美 - 十大经典排序算法汇总(图文并茂)
1. 前言 算法为王. 想学好前端,先练好内功,内功不行,就算招式练的再花哨,终究成不了高手:只有内功深厚者,前端之路才会走得更远. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 ...
随机推荐
- BigDecimal的精度与刻度
BigDecimal是Java中用于高精度算术运算的类.当您需要精确地处理非常大或非常小的数字时,例如在金融计算中,它特别有用.由于众所周知得原因,Double这种类型在某些情况下会出现丢失精度的问题 ...
- oeasy教您玩转vim - 23 - 配置文件
配置文件 回忆上节课内容 我们上次找到配置文件的位置 ~/.vimrc 了解各种配置开关 修改配置文件并应用 这次想了解和配色方案相关的内容 colorscheme vi ~/.vimrc.old 中 ...
- Day 1 - 二分
整数二分 我们可以做到每次排除一半的答案,时间复杂度 \(O(\log n)\). long long l = L, r = R; while(l <= r) { long long mid = ...
- C#实现单例模式的6种方法
介绍 单例模式是软件工程学中最富盛名的设计模式之一.从本质上看,单例模式只允许被其自身实例化一次,且向外部提供了一个访问该实例的接口.通常来说,单例对象进行实例化时一般不带参数,因为如果不同的实例化请 ...
- SUM-ACM——VJ天梯训练赛
这次比赛我暴露了很多问题,一些模拟还有贪心思路错误. 补题如下: E - E 题解:一道模拟题,我的问题在于不知道怎么替换下一个,就从0开始遍历数组然后数组的值--,如果为零就continue下一个, ...
- 如何让SQL Server像MySQL一样拥有慢查询日志(Slow Query Log慢日志)
如何让SQL Server像MySQL一样拥有慢查询日志(Slow Query Log慢日志) SQL Server一直以来被人诟病的一个问题是缺少了像MySQL的慢日志功能,程序员和运维无法知道数据 ...
- 【VMware VCF】VMware Cloud Foundation Part 06:部署 VI 工作负载域。
VMware Cloud Foundation 标准架构中,管理域和 VI 工作负载域需要分开部署,管理域是初始构建(Bring-up)中部署的一个工作负载域并且只有一个,管理域专门用于承载管理相关组 ...
- 【Vue】05 Webpack
Webpack是一个现代JS应用的静态模块打包的工具 学习Webpack需要我们安装NodeJS 配置CNPM & CRM 使用切换镜像的方式配置:[不建议] npm config set r ...
- 英语表达中address和solve的区别
"Address" 和 "solve" 都表示处理问题,但在具体用法和含义上有所不同: Address: 含义: 处理.应对.讨论或提及问题. 强调: 关注并开 ...
- 是忧是喜?——微软撑腰,奥特曼重回OpenAI任CEO —— 争论点:AI发展规范化是否会损害美国在AI领域的领先地位 —— AI发展是否需要规范化
参考: https://mbd.baidu.com/newspage/data/landingsuper?context=%7B%22nid%22%3A%22news_1027953478745543 ...