javascript for循环练习

for循环练习

基本概念: 起码知道饼是咋做的

// 1. for 重复执行某些代码, 通常跟计数有关系
// 2. for 语法结构 // for (初始化变量; 条件表达式; 操作表达式) { // // 循环体 // }
// 3. 初始化变量 就是用var 声明的一个普通变量, 通常用于作为计数器使用
// 4. 条件表达式 就是用来决定每一次循环是否继续执行 就是终止的条件
// 5. 操作表达式 是每次循环最后执行的代码 经常用于我们计数器变量进行更新(递增或者递减)sum+=i;

案例:

// 1. 求1-100之间所有数的平均值
思路:需要一个 sum 和的变量 还需要一个平均值 average 变量

var sum = 0;        
var average = 0;        
for (var i = 1; i <= 100; i++) {
    
                
sum = sum + i;        }        
average = sum / 100;        
console.log(average);

// 2. 求1-100之间所有偶数和奇数的和
思路:我们需要一个偶数的和变量 even 还需要一个奇数 odd

var even = 0;        
var odd = 0;        
for (var i = 1; i <= 100; i++) {
    
                
if (i % 2 == 0) {
    
                    
even = even + i;            
} else {
    
      
odd = odd + i;           
 }        
 }
console.log('1~100 之间所有的偶数和是' + even);        
console.log('1~100 之间所有的奇数和是' + odd);

// 3.求出1-1/2+1/3-1/4……1/100的和
思路:
//1/1
//所有的分子是1
//在分母为偶数时 为减
//在分母为奇数时为加
方法1:

var sum = 0;      
var index = 1;      
for (var i = 1; i <= 100; i++) {
    
    
//在分母为偶数时 为减//          
if(i % 2 === 0){
    
    //              
	//i是偶数           
	sum -= 1/i;//          
	}else{
    
                 
		//i是奇数              
		//在分母为奇数时为加             	
		sum += 1/i;//          
	}
	alert(sum);//0.688172179310195

方法2:

var sum = 0;      
var index = 1;      
for (var i = 1; i <= 100; i++) {
    
    
sum += index/i;// 2 index=-1  3 index=1; 4 index = -1          
//index = -index;//-1         
index *= -1;//-1     
}
alert(sum);//0.688172179310195

// 3. 求1-100之间所有能被3整除的数字的和
思路:整除模3为0 变量一定要定义且赋值

var result = 0;        
for (var i = 1; i <= 100; i++) {
    
                
if (i % 3 == 0) {
    
                    
// result = result + i;                
result += i;            
}        
}
console.log('1~100之间能够被3整数的数字的和是:' + result);

// 4、大马驮2石粮食,中马驮1石粮食,两头小马驮一石粮食,要用100匹马,驮100石粮食,该如何调配?
思路:如何调配没说最佳搭配,所以任何都有可能。3种马3个变量 当a种马产生数量变化时,其余两变量都会随之变化。

//a大马,最多只能50匹马
for(var a =1;a<=50;a++){
    
    
//b种马,最多只能100匹                        
for(var b=1;b<=100;b++){
    
    
//c小马 变量,随着大马和中马数量变化而变化。                            
var c =100-a-b;
//题目中要求需满足两个条件:100匹马100石粮食                            
if((a+b+c)&&(2*a+b+c/2 ==100)){
    
                                    
document.write("大马:"+a+"中吗"+b+"小马"+c)                            
}                        
}                    
}

//5、小明单位发了100元的购物卡,小明到超市买三类洗化用品,洗发水(15元),香皂(2元),牙刷(5元)。要把100元整好花掉,可如有哪些购买结合?
思路:其实思路和马案差不多,只是需要调整下变量使用顺序(因为其中变量并不满足求模得0的条件)。

//牙刷5元一件,100元最多可20件。这就限制件数最多20件
for(a =1;a<=20;a++){
    
                            
for(b=1;b<=50;b++){
    
                                
var c=100-(5*a)-(2*b);
//只有100元正好花掉这一限制条件                            
if((5*a)+(2*b)+(15*c)==100){
    
                                    
document.write('牙刷'+a+"香皂"+b+"洗发水"+c)
 }                        
}                    
}

// 6、公园里有一只猴子和一堆桃子,猴子每天吃掉桃子总数的一半,把剩下一半中扔掉一个坏的。到第七天的时候,猴子睁开眼发现只剩下一个桃子。问公园里刚开始有多少个桃子?
思路:套你猴子,只需逆推即可。此题是参考答案敲出。之前思路:逆推,双重for循环最外层天数<=6 i–最内层则是最上定义桃子变量。桃子变量-第六天-第五天…第二天=1 然后就炸了…

var tao =1;                        
for(var i =1;i<=6;i++){
    
    
//接下来是让我蒙蔽的操作,仔细想想也是合理   
//桃子每次加一乘2,然后返回桃子值再重复操作
tao=(tao+1)*2;                        
}                        
document.write("公园里有"+tao+"个桃子")

//7、五个小朋友排成一队。问第一个多大了,第一个说比第二个大两岁;问第二个,第二个说比第三个大两岁,以此类推。问第五个小朋友几岁了,第五个小朋友说3岁了。问第一个小朋友几岁?
思路:同上

var boy =3;                        
for(var i=1;i<=4;i++){
    
                                
boy+=3;                        
}                        
document.write("第一个孩子"+boy);

//8、 弹出输入框输入总的班级人数(num)
思路:
// 依次输入学生的成绩( 保存起来 score), 此时我们需要用到
// for 循环, 弹出的次数跟班级总人数有关系 条件表达式 i <= num
// 进行业务处理: 计算成绩。 先求总成绩( sum), 之后求平均成绩( average)
// 弹出结果

var num = prompt('请输入班级的总人数:'); 
// num 总的班级人数        
var sum = 0; // 求和的变量        
var average = 0; 
// 求平均值的变量   留意i<=num用法       
for (var i = 1; i <= num; i++) {
    
                
var score = prompt('请您输入第' + i + '个学生成绩');            
// 因为从prompt取过来的数据是 字符串型的需要转换为数字型            
sum = sum + parseFloat(score);        
}        
average = sum / num;        
alert('班级总的成绩是' + sum);        
alert('班级平均分是:' + average);

//9、 打印n行n列的星星 弹窗弹出要求

var rows = prompt('请您输入行数:');        
var cols = prompt('请您输入列数:');        
var str = '';        
for (var i = 1; i <= rows; i++) {
    
                
for (var j = 1; j <= cols; j++) {
    
                    
str = str + '★';            
}
//注意这个放置位置是外循环一次后所执行的代码               
str += '\n';        
}        
console.log(str);

//10.九九乘法表
思路:// 一共有9行,但是每行的个数不一样,因此需要用到双重 for 循环
// 外层的 for 循环控制行数 i ,循环9次 ,可以打印 9 行
// 内层的 for 循环控制每行公式 j
// 核心算法:每一行 公式的个数正好和行数一致, j <= i;
// 每行打印完毕,都需要重新换一行

var str = '';        
for (var i = 1; i <= 9; i++) {
    
     // 外层循环控制行数            
for (var j = 1; j <= i; j++) {
    
     // 里层循环控制每一行的个数  j <= i                
// 1 × 2 = 2                
// str = str + '★';
//字符串拼接  加减乘除                
str += j + '×' + i + '=' + i * j + '\t';            
}            
str += '\n';        
}        
console.log(str);

//11.打印出1000-2000年中所有的闰年,并以每行四个数的形式输出

var count = 0;        
for (var i = 1000; i <= 2000; i++) {
    
                
	//输出闰年            
	if(i % 4 === 0 && i % 100 != 0 || i % 400 === 0){
    
                    
		document.write(i + " ");                
		count++;                
		/*if(count % 4 === 0){                    
			document.write("<br>");                
		}*/                
		if(count === 4){
    
                        
			document.write("<br>");                    
			count = 0;                
			}            
		}        
}

//12.计算10的阶乘
思路:
// 2 12
// 3 1
23
// 10 1
234*…10;
// 1+2+3+4…+100

var sum = 0;        
for (var i = 1; i <= 100; i++) {
    
                
	sum += i;        
}        
alert(sum);       

//13.求1+2!+3!+…+10!的值

alert(sum);        
/*var fac = 1;// Factorial        
for (var i = 1; i <= 10; i++) {            
fac *= i;        
}        
alert(fac);//3628800

//14.打印100~999之间的水仙花数
思路:
// 水仙花数是一种特殊的三位数,它的特点就是,每个数位的立方和,等于它本身。
// 比如 153 就是水仙花数。因为:
// 111+555 +333 = 153
// 100~999 之内,只有 4 个水仙花数,请找出来
//153
//1 parseInt(153/100);
//5 parseInt(153/10)%10;
//3 153%10;

for (var i = 100; i < 1000; i++) {
    
                
	g = i%10;            
	s = parseInt(i/10)%10;            
	b = parseInt(i/100);            
	//每一个数都要处理            
	//1*1*1+5*5*5 +3*3*3 = 153            
	if(g*g*g + s*s*s + b*b*b === i){
    
                    
		//这里的程序表示i就是一个水仙花数                
		console.log(i+"是水仙花数");            
	}        
}

//15.打印5行四列的表格
思路:
//页面中有一个table标签
//5个tr
//4个td

        document.write("<table border=''>");        
        //5个tr        	
        document.write("<tr>");        
        document.write("</tr>");                
        for (var i = 1; i <= 5; i++) {
    
                
        	document.write("<tr>");                                                
        		for(var j = 1; j<=4; j++){
    
                        
        			document.write("<td>" + j + "*" + i + "=" + i * j +"</td>");                                  
        	}            
        document.write("</tr>");        
        }                
        document.write("</table>");

//16.输入一个数 输出这个数的因数
思路:
//8 = 1 2 4 8
//12 = 1 2 3 4 6 12;

var num = 24;        
for (var i = 1; i <= num; i++) {
    
                
	if(num % i === 0){
    
                    
		//i就是num的因数                
		console.log(i + "就是" + num + "的因数");            
	}        
}

//17.判断一个数是否是:素数 (质数):只能被1和其本身整除的数
方案一 : 只有两个因子 (计算因子的个数是否是2 如果是2,是素数)

var num = 19;        
var count = 0;//定义一个计数器        
for (var i = 1; i <= num; i++) {
    
                
	if(num % i === 0){
    
                    
		//i是因子                
		//程序到这里执行两次,表示num就是一个素数                
		count++;            
	}        
}        
//循环结果,count===2,说明num是素数        
if(count === 2){
    
                
	alert(num+"是素数");        
}else{
    
                
	alert(num+"不是素数");        
}

方案二: 因子之和 == 该数 + 1

var num = 1;        
var sum = 0;//因子之和        
for (var i = 1; i <= num; i++) {
    
                	
	if(num % i === 0){
    
                    
		sum += i;            
	}        
}        
if(sum === num + 1){
    
                
	alert(num+"是素数");        
}else{
    
                
	alert(num+"不是素数");        
	}

方案三: 通过一个开关变量控制该数是否是素数 假设 flag == true 是素数
// 8 1 2 4 8
// 7 1 7
// 定义一个监听器,监听num除了1和本身以外是否还有其它 的因子,
// flag = true:表示还有其它因子 // flag = false:表示没有其它因子了

var num = 7;
var flag = false;        
for (var i = 2; i < num; i++) {
    
                
	//i 2 3 4 5 6 7            
	if(num % i === 0){
    
                    
		//程序执行了这里的代码,说明num的因子,除了1和本身以外,还有其它,说明了num不是一个素数                
		flag = true;            
	}       
}        
if(flag){
    
    //flag = true:            
	//如果flag变成了true这个值,说明程序执行到了上面循环中的if条件             
	//num不是一个素数            
	alert(num+"不是素数");        
}else{
    
                
	//num是一个素数            
	alert(num+"是素数");        
	}

*//18.输出100-200之间所有的素数

        var num = 1;        
        for(var num = 100; num <= 200; num++){
    
                
        var sum = 0;//因子之和            
        for (var i = 1; i <= num; i++) {
    
                    
        	if(num % i === 0){
    
                        
        		sum += i;                
        	}            
        }            
        if(sum === num + 1){
    
                    
        	console.log(num+"是素数");            
        }            
        /*else{                
        	console.log(num+"不是素数");            
        }*/      
        }

continue 关键字 退出本次(当前次的循环) 继续执行剩余次数循环

语法格式

 for (var i = 1; i <= 5; i++) {
    
                
 if (i == 3) {
    
                    
 continue; 
 // 只要遇见 continue就退出本次循环 直接跳到 i++            
 }            
 console.log('我正在吃第' + i + '个包子');
 }

案例

// 1. 求1~100 之间, 除了能被7整除之外的整数和

var sum = 0;        
for (var i = 1; i <= 100; i++) {
    
                
if (i % 7 == 0) {
    
                    
continue;            
}            
sum += i;        
}        
console.log(sum);

break 退出整个循环

语法格式:

for (var i = 1; i <= 5; i++) {
    
                
if (i == 3) {
    
                    
break;            
}            
console.log('我正在吃第' + i + '个包子');
 }

案例:

猜你喜欢

转载自blog.csdn.net/weixin_45896126/article/details/108855855