JavaScript练习题

本文介绍如何编写一个JavaScript函数,用于检查一个数字是否是幸运数字,即该数字必须是偶数且其前半部分数字之和等于后半部分。通过示例和代码实现解析这个概念。
部署运行你感兴趣的模型镜像

 1.封装一个函数,判断n是否是幸运数字:只有偶数是幸运数,并且前一半的和等于后一半的和。
例如:isLucky(1230)=true,isLucky(239017)=false

<body>
    <input type="text" id="input"> <!-- input输入框  输入想要判断的数字 -->
    <button id="btn">测试一下,是否是幸运数字呢?</button>
    <script>
        // 获取输入框
        var input = document.getElementById('input')
        // 获取按钮并绑定单击响应函数
        document.getElementById('btn').onclick = function () {
            // 获取到输入框中的内容并调用isLucky函数
            isLucky(input.value);
        }
        //建立函数
        function isLucky(num) {
            // 将数字转换为字符串
            var str = num.toString()
            // 将字符串转换为数组
            var arr_str = str.split("")
            //条件判断->判断输入的数字为偶数并且位数也是偶数
            if (num % 2 == 0 && arr_str.length % 2 == 0) {
                // 创建两个number
                var sum1 = 0
                var sum2 = 0
                // 便利前半个数组并累加,将累加的数值赋值给sum1
                for (var i = 0; i < arr_str.length / 2; i++) {
                    // 累加遍历的数字
                    sum1 += Number(arr_str[i])
                }
                // 便利后半个数组并累加,将累加的数值赋值给sum2
                for (var j = arr_str.length / 2; j < arr_str.length; j++) {
                    //累加遍历的数字
                    sum2 += Number(arr_str[j])

                }
                // 运用三元运算符,判断num1是否与num2相等
                (sum1 == sum2) ? alert("true") : alert("false")
            } else {
                alert("false")
            }
        }
    </script>
</body>


 

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think>好的,我现在需要处理用户关于JavaScript编程练习题及答案的请求。首先,用户明确提到他们正在寻找练习题,并且希望得到答案。根据用户提供的引用内容,有三个引用来源,其中引用1和引用2提供了具体的代码示例,引用3则列举了一些基础功能。 首先,我应该整理这些引用中的信息,看看哪些练习题可以直接提取出来。例如,引用1中的九九乘法表生成代码,引用2中的第一个不重复字符查找,以及引用3中的多个练习题,如计算整数和、判断闰年、日期计算、奇偶数和、打印三角形等。这些都可以作为练习题的基础。 接下来,我需要按照用户的要求,生成相关的问题及答案。用户可能希望每个问题都有对应的解答,并且答案要符合JavaScript的语法。同时,用户要求使用中文回答,结构清晰,分步骤说明。此外,系统级指令中提到要生成相关问题,因此在回答最后需要添加相关问题部分。 需要注意的是,用户提供的引用中有一些代码示例可能需要调整,以确保语法正确。例如,引用2中的代码可能有一些错误,比如变量作用域问题或逻辑错误,应该在答案中进行修正。例如,原代码中可能存在重复替换的问题,导致结果不正确,需要优化查找第一个不重复字符的算法。 此外,用户可能希望练习题涵盖不同难度级别,从基础到进阶。因此,我应该从引用中提取基础题目,如九九乘法表、奇偶数和,然后稍微复杂一点的如闰年判断、日期计算,再到更复杂的如第一个不重复字符。同时,可以补充一些其他常见题目,如数组去重、斐波那契数列等,以丰富内容。 在编写答案时,需要确保代码符合最佳实践,比如使用ES6语法(let/const代替var,箭头函数等),并添加注释解释代码逻辑。同时,每个问题应分步骤说明解决思路,例如先分析问题,再分解步骤,最后编写代码。 最后,生成的相关问题应该围绕JavaScript编程的不同方面,比如性能优化、算法改进、应用场景等,帮助用户进一步深入学习。 总结步骤: 1. 提取引用中的练习题,整理成问题列表。 2. 对每个问题编写解答,确保代码正确并附上解释。 3. 检查代码是否符合JavaScript最佳实践,修正原引用中的潜在错误。 4. 生成相关问题,促进用户深入思考。 5. 确保整个回答结构清晰,符合用户要求的格式,包括分步骤说明和引用标注。</think>### JavaScript 编程练习题及答案 --- #### **1. 打印九九乘法表** **要求**:用 JavaScript 生成格式整齐的九九乘法表,每行输出对应的乘法表达式,例如: $1*1=1$,$1*2=2 \ 2*2=4$,依此类推。 **解答**: ```javascript function printMultiplicationTable() { for (let i = 1; i <= 9; i++) { let line = ''; for (let j = 1; j <= i; j++) { const product = i * j; line += `${j}*${i}=${product.toString().padStart(2, ' ')} `; } console.log(line); } } printMultiplicationTable(); ``` **步骤说明**: - 外层循环控制行数(1到9),内层循环控制每行的列数(1到当前行号)。 - 使用模板字符串和 `padStart` 对齐乘积结果,确保格式整齐[^1]。 --- #### **2. 查找字符串中第一个不重复的字符** **要求**:给定字符串如 `"leetcode"`,返回第一个不重复字符的索引(示例应返回 `0`)。 **解答**: ```javascript function firstUniqChar(str) { const frequency = {}; // 统计字符频率 for (const char of str) { frequency[char] = (frequency[char] || 0) + 1; } // 查找第一个频率为1的字符 for (let i = 0; i < str.length; i++) { if (frequency[str[i]] === 1) return i; } return -1; } console.log(firstUniqChar("leetcode")); // 输出 0 ``` **优化点**: - 原引用代码通过多次替换操作效率较低,此处改用哈希表统计频率,时间复杂度为 $O(n)$[^2]。 --- #### **3. 计算0到99的整数和** **要求**:求 $0+1+2+\dots+99$ 的结果。 **解答**: ```javascript const sum = Array.from({ length: 100 }, (_, i) => i).reduce((acc, val) => acc + val, 0); console.log(sum); // 输出 4950 ``` **简化思路**:利用 `Array.from` 生成0-99的数组,再用 `reduce` 求和。 --- #### **4. 判断闰年** **要求**:输入年份,若为闰年返回 `true`。闰年规则:能被4整除但不能被100整除,或能被400整除。 **解答**: ```javascript function isLeapYear(year) { return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; } console.log(isLeapYear(2000)); // true console.log(isLeapYear(1900)); // false ``` --- #### **5. 打印星号三角形** **要求**:输入层数 $n$,打印出如下三角形($n=3$ 时): ``` * ** *** ``` **解答**: ```javascript function printStarTriangle(n) { for (let i = 1; i <= n; i++) { console.log('*'.repeat(i)); } } printStarTriangle(3); ``` --- #### **6. 计算1到100的偶数和与奇数和** **要求**:分别输出偶数和与奇数和。 **解答**: ```javascript let evenSum = 0, oddSum = 0; for (let i = 1; i <= 100; i++) { i % 2 === 0 ? (evenSum += i) : (oddSum += i); } console.log(`偶数和:${evenSum}, 奇数和:${oddSum}`); // 偶数和:2550, 奇数和:2500 ``` --- #### **7. 数组去重** **要求**:实现一个函数,去除数组中的重复元素。 **解答**: ```javascript const uniqueArray = arr => [...new Set(arr)]; console.log(uniqueArray([1, 2, 2, 3])); // [1, 2, 3] ``` --- #### **8. 斐波那契数列** **要求**:输出前 $n$ 项斐波那契数列(如 $n=5$,输出 `[0, 1, 1, 2, 3]`)。 **解答**: ```javascript function fibonacci(n) { const sequence = [0, 1]; for (let i = 2; i < n; i++) { sequence[i] = sequence[i - 1] + sequence[i - 2]; } return sequence.slice(0, n); } console.log(fibonacci(5)); // [0, 1, 1, 2, 3] ``` --- ### 相关问题 1. 如何优化查找第一个不重复字符的算法性能? 2. 打印九九乘法表时如何实现右对齐? 3. 斐波那契数列有哪些更高效的计算方法? 4. 如何用递归实现数组去重? 5. 判断闰年的逻辑是否可以进一步简化?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值