目录
一、给定一个数组(如[2, 7, 11, 15]),求任意两个数组元素(不能是同一个数组元素)值的和为某一个指定值(如9)的数组下标。
二、封装函数实现10得阶乘 最终输出10=10*9*8*7*6*5*4*3*2*1=3628800
三、给出一个字符串 输出最长单词的长度(和数组一样可以使用for循环遍历,也可以通过length属性获取长度)
四、100到1000以内的水仙花数 个位立方+十位立方+百位立方=水仙花数
一、给定一个数组(如[2, 7, 11, 15]),求任意两个数组元素(不能是同一个数组元素)值的和为某一个指定值(如9)的数组下标。
例如 给定[2, 7, 11, 15], target = 9,求符合条件数组元素下标return [0,1]
思路:
用两层for循环遍历数组元素,第二层循环遍历的数组元素为第一层循环遍历的数组元素的后一个,这样就可以保证两个数组元素不是同一个,声明一个变量为两个数组元素之和,然后判断与目标值是否相等,相等时,返回数组的下标。
代码:
//封装函数 给target设置形参 通过修改实参的值可以更改n
function target(n) {
//将题目中给定的数组进行声明
var arr = [2, 7, 11, 15];
//循环遍历数组中的数组元素
for (var a = 0; a < arr.length; a++) {
//循环遍历后一个数组元素,确保选的两个任意数组元素不是同一个
for (var b = a + 1; b <= arr.length; b++) {
//声明一个c为选择的两个数组元素之和
var c = arr[a] + arr[b];
//判断两个数组元素之和是否等于指定值
if (c == n) {
//返回题目中要求的数组下标
return [a, b]
}
}
}
}
//声明一个res接收返回值
var res = target(18)
//打印res 结果就是符合条件的数组元素下标
console.log(res)
运行结果如下:
二、封装函数实现10得阶乘 最终输出10=10*9*8*7*6*5*4*3*2*1=3628800
思路:
使用for循环循环遍历从n到2的每一个数,然后让循环遍历的每个数后边拼接字符'*',声明一个空字符串,再将他们进行相加(字符串拼接)操作,再将这个数后面拼接一个字符‘1‘(因为1后面没有*字符),再声明一个初始值为1的变量,做相乘操作,和就为阶乘结果,最后将结果进行字符串拼接。
代码:
//封装函数 给fc求阶乘的数设置一个形参 通过修改实参的值可以更改n
function fc(n) {
//声明一个r为一个空字符串,h初始值为1
var r = "", h = 1;
//循环遍历从n到2的值
for (var i = n; i > 1; i--) {
//h=h*i 让从n到2的值相乘(阶乘)
h *= i
//n到2之间的每个值后面拼接一个字符串*
r += i + '*'
}
//声明一个z 让n到2后面的值拼接一个字符串1,以字符串的形式展示出从n到1相乘的表达式
var z = r + "1"
//打印出字符串拼接出的答案
console.log(n + "=" + z + "=" + h)
}
//声明一个实参被形参调用
var res = fc(10)
运行结果如下:
三、给出一个字符串 输出最长单词的长度(和数组一样可以使用for循环遍历,也可以通过length属性获取长度)
思路:
将字符串转为数组的形式,然后循环遍历数组中的每个数组元素,声明一个变量接收最长的单词长度,判断每个数组元素的长度是否比现在的最长单词长度要长,长的话进行赋值,循环遍历完之后,最长的单词长度就会求出。
代码:
//声明一个字符串
var str = 'he is jumped ahdjksnadkjfhkjas';
//封装函数求最最长单词的长度
function maxLength() {
//将字符串转换成数组
var arr = str.split(' ');//['he','is','','']
//声明一个最长单词长度,初始值为0
var max = 0;//最长单词长度
//循环遍历数组中的每一个值
for (var i = 0; i < arr.length; i++) {
//当遍历到的数组中单词的长度>最长单词长度
if (arr[i].length > max) {
//将此时的单词长度的值赋给最长单词长度
max = arr[i].length
}
}
//返回最长单词长度
return max
}
//此时打印的结果为数组中的最长单词的长度
console.log(maxLength())
运行结果如下:
四、100到1000以内的水仙花数 个位立方+十位立方+百位立方=水仙花数
思路:
循环遍历100-1000之间的数字,百位数字为这个数除100取整,十位数字为这个数除100取余后除10,个位数字为这个数除10取余,将个十百位的数字的立方和与这个数字相比较,如果相等此时的数就是水仙花数。
代码:
//封装函数,设置形参
function sum() {
//循环遍历100到1000之间的数字
for (var i = 100; i < 1000; i++) {
//声明变量为百位数字
var a = parseInt(i / 100);//百位数字
//声明变量为十位数字
var b = parseInt(i % 100 / 10);//十位数字
//声明变量为个位数字
var c = i % 10;
//当百位的立方+十位的立方+个位的立方相加等于遍历的这个数时
if (a * a * a + b * b * b + c * c * c == i) {
//此时打印的数为水仙花数
console.log(i + '是水仙花数');
}
// if (Math.pow(a, 3) + Math.pow(b, 3) + Math.pow(c, 3) == i) {
// console.log(i + '是水仙花数');
// }
}
}
//调用函数
sum()