1. 用户输入一个数字n,计算3/2+4/3+5/4+......+(n+1)/n。
function sumNumber(number){
var num = 0
for(var i = 2; i<=number;i++){
num += (i+1)/i
}
return num
}
console.log(sumNumber(prompt('')))
2. 用户输入一个数字,在控制台中列出它的所有约数。
function yueNumber(number){
for(var i = 1;i<=number;i++){
if(number % i == 0){
console.log(i)
}
}
}
yueNumber(prompt())
3. 小游戏1
大家从小到大,都玩儿过的一个庸俗的游戏:游戏玩儿法就是,大家轮流报数,如果报到能被7整除的数字,
或者尾数是7的数字,都算踩地雷了。就应该罚唱歌。请在控制台输出1~60之间的所有“安全数”。比如:1、2、3、4、5、6、8、9、10、11、12、13、15、16、18、19、20、22、23、24、25、26、29、30
for(var i=1;i<=60;i++){
if(!(i % 7 == 0 || (i%10) == 7)){
console.log(i);
}
}
4. 求水仙花数
水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。比如153就是水仙花数。 因为:
1^3+5^3+3^3 = 153。那么100~999之内,只有4个水仙花数,请编程找出来。
for (var i = 100; i <= 999; i++) {
var gw = i % 10;
var sw = parseInt(i / 10) % 10;
var bw = parseInt(i / 100);
if (i == Math.pow(gw, 3) + Math.pow(sw, 3) + Math.pow(bw, 3)) {
console.log(i);
}
}
5. 求完美数
如果一个数恰好等于它的因数之和,则称该数为“完美数”。
例如:第1个完全数是6,它有因数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。 第2个完全数是28,它有因数1、2、4、7、14、28,除去它本身28外,其余5个数相加,1+2+4+7+14=28。试寻找1~10000之间的所有完美数。
// 方法一
for (var i = 1; i <= 10000; i++) {
var sum = 0;
for (var j = 0; j < i; j++) {
if (i % j == 0) {
sum += j;
}
}
if (sum == i) {
console.log(i);
}
}
// 方法二
function getNumber() {
for (var i = 1; i <= 10000; i++) {
var sum = 0;
for (var item of getNumberArray(i)) {
sum += item
}
sum == i && console.log(i + '是一个完美数')
}
}
// 方法三
function getNumberArray() {
var array = []
for (var b = 1; b < number; b++) {
if (number % b == 0) {
array.push(b)
}
}
return array;
}
getNumber()
6. 用户输入一个数字,判断这个数字是否是质数
var num = prompt();
function getNum(num) {
if (num == 0 || num == 1) {
return num + '不是质数';
}
for (var i = 2; i < num; i++) {
if (num % i == 0) {
return num + '不是质数';
}
}
return num + '是质数';
}
alert(getNum(num));
7. 苹果3元一个,鸭梨2元一个,桃子1元一个。现在想用200元买100个水果,在控制台中列出所有可能性。
var apple = 3
var pear = 2
var peach = 1
var num = 0
for(var i = 0;i<=66;i++){
for(var j = 0;j<=100;j++){
for(var k = 0;k<=100;k++){
if((i+j+k)== 100 && (i*apple)+(j*pear)+(k*peach)<=200){
console.log(i,j,k)
}
}
}
}
8. 求1! + 2! + 3! + 4! + …… + 10!的和,叹号表示阶乘,如4! = 1 * 2 * 3 * 4
var num = 1
var temp = 0
for(var i=1;i<=10;i++){
num*=i
temp+=num
}
console.log(temp)
9.求一个三位数,该三位数等与其每位数字的阶乘之和
// 第一种
for(var n = 145;n<1000;n++){
var a = parseInt(n / 100)
var b = parseInt((n /10) % 10)
var c = parseInt(n % 10)
if(n == (fun(a) + fun(b) + fun(c))){
console.log(n)
}
}
// 第二种
function fun(i){
var n = 1;
var s = 1;
while ( n <= i ) {
s *= n;
n += 1;
}
return s;
}
10.编写一个函数rev用于将一个整数前后倒置。
例如rev(12345)将返回54321,rev(123)将返回321,整数位数不限制,多少位都行。
// 第一种
function funStr(number){
var str = ''
while(number){
str += number % 10
number = parseInt(number / 10)
}
console.log(str /1)
return str
}
funStr(12345)
// 第二种
function funStr(number) {
var strArray = (number + '').split('').reverse()
var str = ''
for (var item of strArray) {
str += item
}
console.log(str / 1)
}
funStr(1234567)
// 第三种
function funStr(number){
number += ''
for(var i = number.length - 1;i>=0;i--){
console.log((number[i])/1)
}
}
funStr(12345)
11. 如果整数A 的全部约数(包括1,不包括A 本身)之和等于B,且整数B 的全部约数(包括1,不包括B 本身)之和等于A,则称整数A和B是一对亲密数。求3000 以内的全部亲密数。
// 第一种
function sum(num) {
var sum = 0;
for (var i = 1; i < num; i++) {
if (num % i == 0) {
sum += i;
}
}
return sum;
}
// 第二种
for (var i = 1; i < 3000; i++) {
//拿到i的约数和
var b = sum(i);
//判断b的约数和与i 是否相等 且 i和b不相等
if (sum(b) == i && i != b) {
console.log(i + '和' + b + '是一对亲密数');
}
}
12.编写函数repeat(char,n) 实现重复char字符串n次,比如repeat("★",6) 返回"★★★★★★"
// 第一种
function repeat(char,n){
var array = []
for(var i = 0;i<n;i++){
array.push(char)
}
return array.join('');
}
repeat(prompt('请输入重复的字符串'),prompt('请输入要重复的次数'))
//第二种
function repeat(char, n) {
// var str = '';
var array = []
for (var i = 0; i < n; i++) {
// str += char;
array.push(char)
}
console.log(array.join(''))
}
repeat(1,6)
13.打印等腰三角形
*
***
*****
*******
*********
function print(){
var n = prompt('请输入三角形的层数');
for(var i = 0; i < n; i++){
console.log(" ".repeat(n-i-1)+"*".repeat(i*2+1))
// console.log(repeat(" ",n-i-1)+repeat("*",i*2+1))
}
}
print()
14.编写函数rev(char) 实现将字符串char倒置,比如rev("spring") 返回"gnirps"
function rev(char){
var array = char.split('').reverse().join('')
console.log(array);
}
rev('spring')
15.将字符串"i come from beijing"倒置,即控制台输出"beijing from come i",语句直接写在程序中,不需要用户输入
//第一种
function comeFrom(){
var str = 'i come from beijing'
var array = str.split(' ').reverse().join(' ')
console.log(array)
}
comeFrom()
//第二种
function comeForm(){
var char = 'i come from beijing';
var charArray = char.split(' ');
var newArray = [];
var i = charArray.length - 1;
for(var item of charArray){
// newArray.unshift(item)
newArray[i] = item;
i--;
}
console.log(newArray.join(' '))
}
comeForm()
16.编写函数rightchange(char,n) 实现字符串char循环右移n位。比如rightchange("abcdefg",2) 返回"fgabcde"
function rightchange(char,n){
var newArray = [];
var index = 0;
if(n > char.length){
throw new Error('您传入的参数n过长,请重新传入');
return;
}
for(var i = 0; i < char.length; i++){
// 0 1 2 3 4
if(i <= char.length - 1 - n){
newArray[i+n] = char[i]
}else{
newArray[index] = char[i];
// newArray[char.length - 1 - i] = char[i];
index++;
}
}
console.log(newArray.join(''))
}
rightchange("abcdefg",2);
17.有10个学生的成绩存在数组中,请统计大于等于平均成绩的人数。成绩直接以数组形式写在程序中,不需要用户输入。
function countGrades(grades){
var array = []
var avgSum = 0
for(var item of grades){
// 平均分
avgSum += item/grades.length
}
for(var item of grades){
if(item >= avgSum){
array.push(item)
}
}
console.log('平均数是:'+avgSum)
console.log('大于等于平均成绩有:',array)
}
countGrades([5,20,30,40,55,60,70,80,90,100])
18.勾股定理:直角三角形中,两个直角边的平方和,等于斜边平方和。寻找三边的长度都不大于100,并且三边边长都是整数的可能,在控制台输出。
function triangleTheorem(a){
for(var i = 1;i<=a;i++){
for(var j = i;j<=a;j++){
for(var k = j;k<=a;k++){
if((i**2) + (j**2) == (k**2) && (i+j) >= k){
console.log(i,j,k)
}
}
}
}
}
triangleTheorem(100)
19.编写函数maxsame(char1,char2) 返回字符串char1和char2的最大相同子串,比如maxsame("abcdefghijklmn","mndefghlm") 返回"defgh"。
function maxSame(str1,str2){
var newStr = '';
var newStrLength = 0;
for(var i = 0; i < str1.length; i++){
for(var j = i+1; j < str1.length; j++){
var substr = str1.substring(i,j+1);
if(str2.indexOf(substr) != -1 && substr.length > newStrLength){
newStr = substr;
newStrLength = substr.length;
}
}
}
return newStr
}
console.log(maxSame('abcdefghijklmn','mndefghlm'))
20.将"i love javascript cai guai"的每个单词的第一个字母,变为大写。
function conversionBig(string){
var str =''
var array1 = []
var array = string.split(' ')
for(var item of array){
var array = item.replace(item[0],item[0].toUpperCase())
//第一种
// array1.push(array)
// 第二种
str += array + ' '
}
// 第一种
// console.log(array1.join(' '))
// 第二种
console.log(str);
}
conversionBig('')
// 第三种
function conversionBig(string){
array = string.split(' ')
for(var i = 0;i<array.length;i++){
array[i] = array[i].replace(array[i][0],array[i][0].toUpperCase())
}
console.log(array.join(' '))
}
conversionBig('i love javascript cai guai')