js_流程控制-类型-运算符-循环实例

流程控制-类型-运算符-循环实例

1、值传递

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num1=44;
var num2=32;
function f1(num1,num2){
num=100;//隐式全局变量
num1=100;
num2=100;
console.log(num);//100
console.log(num1);//100
console.log(num2);//100
}
f1(num1,num2);//函数调用
console.log(num1);//44
console.log(num2);//32
console.log(num);//100
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num1=44;
var num2=32;
function f1(num,num1){
num=100;
num1=200;
num2=300;
console.log(num);//100
console.log(num1);//200
console.log(num2);//300
}
f1(num1,num2);//函数调用
console.log(num1);//44
console.log(num2);//300
console.log(num);//undefined报错

2、构造函数中的值传递

1
2
3
4
5
6
7
8
9
10
11
12
13
function Person(name,age,salary){
this.name=name;
this.age=age;
this.salary=salary;
}
function f1(person){
person.name="ls";
person=new Person("aa",18,10);
}
var p=new Person("3d",20,29);
console.log(p.name);//3d
f1(p);
console.log(p.name);//ls

3、交换两个数的值(一)

1
2
3
4
5
6
7
8
//变量的交换的第一个思路:使用第三方的变量进行交换
var num1=10;
var num2=30;
var temp=num1;//把num1的值取出来放在temp变量中
num1=num2;//把num2的值取出来放在num1中
num2=temp;//把temp变量的值取出来放在num2中
document.write("num1="+num1+"<br>");
document.write("num2="+num2);

交换两个数的值(二)

1
2
3
4
5
6
7
8
9
10
11
<!--CTRL+ALT+L 格式化代码-->
var num1=1;
var num2=28;
//把num1中的值和num2的值,取出来相加,重新赋值给num1
num1=num1+num2;//30
//把num1中的值和num2的值,取出来相减,重新赋值给num2
num2=num1-num2;//10
//把num1中的值和num2的值,取出来相减,重新赋值给num1
num1=num1-num2;//20
document.write("num1="+num1+"<br>");
document.write("num2="+num2);

交换两个数的值(三)

1
2
3
4
5
6
7
8
9
10
11
12
//变量的名字是不能重复的
/// var num1=10;
//var num1=20;
//扩展变量的交换:只需要看代码,不需要理解----------位运算
var num1=10;
var num2=20;
num1=num1^num2;
num2=num1^num2;
num1=num1^num2;
document.write("num1="+num1+"<br>");
document.write("num2="+num2);

4、如果一个数字大于另外一个数字,则输出大的数字

1
2
3
4
5
6
7
8
9
10
11
12
var num1=10;
var num2=100;
if(num1>num2){
console.log(num1);
}else
console.log(num2);
//小苏的年龄是否大于18岁?如果成年了,则提示,可以看电影了!
var age=19;
if(age>18){
console.log("可以看电影了!");
}else
console.log("小苏是未成年!");

5、如果小苏是成年人,则可以去看电影,否则就回家写作业

1
2
3
4
5
6
var age=13;
if(age>18){
console.log("可以去看电影!");
}else{
console.log("回家写作业");
}

6、提示用户请输入年龄

1
2
3
4
5
6
7
var age=parseInt(prompt("请您输入年龄!"));
//console.log(age);//最终的结果是字符串类型
if(age>18){
console.log("可以去看电影!");
}else{
console.log("回家写作业");
}

7、找到两个数的最大值

1
2
3
4
5
6
7
var num1=10;
var num2=20;
if(num1>num2){
console.log(num1);
}else{
console.log(num2);
}

找到两个数的最大值(三元表达式)

1
2
3
4
5
6
7
8
var x=10;
var y=30;
var result1= x>y?x:y;
console.log(result1);
var age=19;
var result2=age>18?"成年了!":"未成年!";
console.log(result2);

8、判断这个数字是奇数还是偶数?

1
2
3
4
5
6
var num=parseInt(prompt("请您输入想要测试的数字"));
if(num%2==0){
console.log("不是奇数");
}else{
console.log("是奇数");
}

9、成绩的在90-100(包含),显示A级成绩的在80-90(包含),显示B级成绩的在70-80(包含),显示C级成绩的在60(包含)-70(包含),显示D级,成绩低于60(包含),显示E级

1
2
3
4
5
6
7
8
9
10
11
12
13
var score=80;
if(score>90&&score<=100){
console.log("A");
}else if(score>80&&score<=90){
console.log("B");
}
if(score>70&&score<=80){
console.log("C");
}else if(score>=60&&score<=70){
console.log("D");
}else{
console.log("E");
}

switch-case判断等级

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var rank="C";
switch(rank){
case "A":
conosle.log("90到100之间");
break;
case "B":
console.log("80到90之间");
break;
case "C":
console.log("70到80之间");
break;
case "D":
console.log("60到70之间");
break;
default:
console.log("低于60");
break;
}

10、判断每个月有多少天?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var year=parseInt(prompt("请输入年份"));
var month=parseInt(prompt("请输入月份"));
if(month>=1&&month<=12){
switch(month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log(year+"年"+month+"有31天");break;
case 2:
if(year%4==0&&year%100!=0||year%400==0){
console.log(year+"年的2月有29天!");
}else{
console.log(year+"年的2月有28天!");
}break;
default:console.log(year+"年"+month+"月有30天");
}
}else{
console.log("输入的月份不正确!");
}

11、输入一个数字,判断是星期几

1
2
3
4
5
6
7
8
9
10
11
12
13
<meta charset=utf-8><script>
var num=parseInt(prompt("请输入一个数字"));
switch(num){
case 1:console.log("这是星期一");break;
case 2:console.log("这是星期二");break;
case 3:console.log("这是星期三");break;
case 4:console.log("这是星期四");break;
case 5:console.log("这是星期五");break;
case 6:console.log("这是星期六");break;
case 7:console.log("这是星期日");break;
default:console.log("输入的数字超出范围!请重新输入");break;
}
</script>

12、输入一个数字(年份),判断是不是闰年?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<head>
<meta charset=utf-8>
</head>
<body>
</body>
<script>
var year=Number(prompt("情输入年份"));
if(!isNaN(year)){
if(year%4==0&&year%100!=0||year%400==0){
console.log("是闰年");
}else if(year%4!=0&&year%100==0||year%400!=0){
console.log("不是闰年");}
}
else{
console.log("输入格式不正确!");
}
</script>
</html>

14、本金10000万元,年利率数千分之三,每过1年,将本金和利息相加作为新的本金,计算5年后,获得的本金是多少?

1
2
3
4
5
var money=10000;//本金
var rate=0.003;
for(i=0;i<5;i++){
money=money+money*rate;//新的本金
}console.log(money);

15、(斐波那契)有个人想知道,一年内一对兔子能繁殖多少对?于是修筑了移到围墙把一对兔子关在里面。已知一对兔子每个月可以生一对小兔子,而小兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖多少对?(兔子的规律为数列:1,1,2,3,5,8,13,21)

//每个月的值就是前面两个月的和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num1=1;
var num2=1;
var sum=sum1+sum2;
var num1=num2;
var num2=sum;
sum=num1+num2;*/
var num1=1;
var num2=1;
var sum=0;
for(i=3;i<=12;i++){
sum=num1+num2;
num1=num2;
num2=sum;
}console.log("12个月之后繁殖了"+sum+"对");

16、求1-100的和

1
2
3
4
var sum=0;
for(i=1;i<=100;i++){
sum+=i;
}console.log(sum);

求和求和:sum=2+22+222+…222222

1
2
3
4
5
var sum=0;
for(i=2;i<222222;i=i*10+2){
sum=sum+i;
}
document.write("2+22+222+...222222="+sum);

17、求1-100之间的所有偶数的和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var sum=0;
for(i=1;i<=100;i++){
if(i%2==0){
sum+=i;
}
}console.log("1-100之间的所有偶数的和为:"+sum);
//dowhile循环:计算sum=1+2+3+4+....+100的值
<script type="text/javascript">
var sum=0;
var i=1;
do{
sum=sum+i;
i++;
}while(i<=100);
document.write("1+2+3+4+....+100="+sum);
</script>

18、求1-100之间的所有奇数的和

1
2
3
4
5
6
var res=0;
for(i=1;i<=100;i++){
if(i%2!=0){
res+=i;
}
}console.log("1-100之间的所有奇数的和为:"+res);

19、求1-100之间的能被3整除的数的和

1
2
3
4
5
6
var res1=0;
for(i=1;i<=100;i++){
if(i%3==0){
res1+=i;
}
}console.log("1-100之间的能被3整除的数的和为:"+res1);

20、求1-100之间的能被7整除的数的和

1
2
3
4
5
6
var res2=0;
for(i=1;i<=100;i++){
if(i%7==0){
res2+=i;
}
}console.log("1-100之间的能被7整除的数和为:"+res2);

21、输出:计算1—-100之间的和

1
2
3
4
5
6
7
8
9
<script>
//第三种方法:while循环
var sum=0;//变量sum 暂时存放值
var i=1;//计数器
while(i<=100){
sum=sum+i;
i++;
}console.log(sum);
</script>

22、求1-100之间的所有偶数的和

1
2
3
4
5
6
7
var i=1;
var sum=0;
while(i<=100){
if(i%2==0){
sum=sum+i;
}i++;
}console.log("偶数和"+sum);

23、求1-100之间的奇数的和

1
2
3
4
5
6
7
var i=1;
var sum=0;
while(i<=100){
if(i%2!=0){
sum=sum+i;
}
i++;}console.log("奇数和"+sum);

24、求6的阶乘

1
2
3
4
5
6
var i=1;
var jie=1;
while(i<=6){
jie=jie*i;
i++;
}console.log("6的阶乘为"+jie);

25、请输出1-100之间所有被7整除的数字

1
2
3
4
5
6
7
var i=1;
while(i<=100){
if(i%7==0){
console.log(i);
}
i++;
}

26、验证登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//求账号和密码是否一致,登录效果的实现
//提示用户输入账号
//提示用户输入密码
//如果账号或者密码不对,则一直提示输入账号和密码
//账号----admin
//密码----123----字符串类型
var userName=prompt("请您输入账号");//存储账号
var userPwd=prompt("请您输入密码");//存储密码
while(userName!="admin"||userPwd!=123){
//变量的重新赋值
userName=prompt("请您重新输入账号");//账号
userPwd=prompt("请您重新输入密码");//密码
}console.log("登录成功!");

27、求100以内所有3的倍数的和

1
2
3
4
5
6
7
8
var sum=0;
var i=1;
while(i<=100){
if(i%3==0){
sum=sum+i;
}
i++;
}console.log("100以内3的倍数的和为"+sum);//1683

28打印九九乘法表

1
2
3
4
5
6
7
8
<meta charset=utf-8><script>
for(i=1;i<=9;i++){
for(j=1;j<=i;j++){//每行有多少个
document.write(j+"*"+i+"="+(i*j)+" ");
}
document.write("<br>");
}
</script>

打印九九乘法表

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
document.write("<table border=1 cellpadding=0 cellspacing=0>");
for(i=1;i<=9;i++){
document.write("<tr>");
for(j=1;j<=i;j++){//每行有多少个
document.write("<td>");
document.write(j+"*"+i+"="+(i*j));
document.write("</td>");
}
document.write("</tr>");
}
document.write("</table>");
</script>

29、画星星

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<meta charset=utf-8>
<font>按照要求打印星星:外层循环决定行数,内层循环决定每一层的个数</font>
<hr>
<font>在同一行显示5颗星星</font><br>
<script type="text/javascript">
for(i=1;i<=5;i++){
document.write("*");
}
</script>
<hr>
<font>打印三行都显示5颗星星</font><br>
<script type="text/javascript">
for(i=1;i<=3;i++){
for(j=1;j<=5;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>打印根据行数的不同显示与行数相同的星星</font><br>
<script type="text/javascript">
for(i=1;i<=5;i++){
for(j=1;j<=i;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>每增加一行,就多打印两个星星</font><br>
<script type="text/javascript">
for(i=1;i<=5;i++){
for(j=1;j<=2*i-1;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>倒序打印星星个数</font><br>
<script type="text/javascript">
for(i=5;i>=1;i--){
for(j=1;j<=i;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>倒序打印将星星都移到最中间的排列</font><br>
<script type="text/javascript">
for(i=5;i>=1;i--){
for(k=1;k<=6-i;k++){
document.write("&nbsp;");
}
for(j=1;j<=i;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>正序打印将星星都移到最中间的排列</font><br>
<script type="text/javascript">
for(i=1;i<=5;i++){
for(k=1;k<=6-i;k++){
document.write("&nbsp;");
}
for(j=1;j<=i;j++){
document.write("*");
}
document.write("<br>");
}
</script>
<hr>
<font>第一行打印5颗星,第二行,第三行,第四行打印2颗星(中间有空格),第五行打印五颗星</font><br>
<script type="text/javascript">
for(i=1;i<=5;i++){
for(k=1;k<=6-i;k++){
document.write("&nbsp;");
}
for(j=1;j<=5;j++){
if(i>=2&&i<=4&&j>=2&&j<=4){
document.write("&nbsp;&nbsp;");
}else{
document.write("*");
}
}
document.write("<br>");
}
</script>

30、PI/4=1-1/3+1/5-1/7+1/9-1/11+….1/1000000

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<script type="text/javascript">
var sum=0,sum1=0,sum2=0,t=0;
for(i=1;i<=1000000;i=4+i){
t=1/i;
sum1=sum1+t;
}
for(j=3;j<1000000;j=4+j){
t=1/j;
sum2=sum2+t;
}
sum=sum1-sum2;
document.write(sum*4);
</script>
<hr>
<!--第二种方法-->
<script type="text/javascript">
var sum=0;
var t=0;//保存每一项的值
var fenmu=1;//分母
var xiang=1;//第几项
while(fenmu<=1000000){
t=1/fenmu;//每一项的值
if(xiang%2==0)//判断是偶数项还是奇数项
t=-t;//是偶数项,该数就会变成负值
sum=sum+t;//计算sum的值
fenmu=fenmu+2;//将分母每次运算完上面的都加上2
xiang++;//增加到第几项
}
document.write(sum*4);
</script>
<hr>
<!--第三种方法-->
<script type="text/javascript">
var sum=0;
var i,j,t;
for(i=1,j=1;i<1000000;i=i+2,j++){
t=1/i;
t=t*Math.pow(-1,j+1);
sum=sum+t;
}
document.write(sum*4);
</script>

31、给一个金额,判断此金额应该由几张哪种面额的纸币组成?

188元=1张100张,1张50的,1张20的,1张10元的,1张5元的,3张1元的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<script language="javascript">
var i=123456;
var bai=Math.floor(i/100);
var wushi=Math.floor(i%100/50);
var ershi=Math.floor(i%50/20);
var shi=Math.floor((i%50-ershi*20)/10);
var wu=Math.floor(i%10/5);
var yi=i%5;
if(bai!=0)
document.write(bai+"张100元 ");
if(wushi!=0)
document.write(wushi+"张50元 ");
if(ershi!=0)
document.write(ershi+"张20元 ");
if(shi!=0)
document.write(shi+"张10元 ");
if(wu!=0)
document.write(wu+"张5元 ");
if(yi!=0)
document.write(yi+"张1元 ");
</script>

32、用1、2、3、4这四个数字任意组合成4位数,并显示出来

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<script type="text/javascript">
var a=0;
for(i=1;i<5;i++){
for(j=1;j<5;j++){
for(k=1;k<5;k++){
for(m=1;m<5;m++){
if(i!=j&&i!=k&&j!=k&&i!=m&&j!=m&&k!=m){
document.write(i*1000+j*100+k*10+m*1+"&nbsp;&nbsp;");
a=a+1;
if(a%5==0){
document.write("<br>");}
}
}
}
}
}
</script>
<hr>第二种方法<br>
<script>
for(a=1;a<=4;a++){
for(b=1;b<=4;b++){
for(c=1;c<=4;c++){
for(d=1;d<=4;d++){
if(a!=b&&a!=c&&a!=d&&b!=c&&b!=d&&c!=d){//判断a、b、c、d不同时才会输出值
var num=""+a+b+c+d;
document.write(num+"&nbsp;\t");
}
}
}
}
}
</script>

33、小球从100米高的地方下落,反弹的高度为原来的一班,问当小球反弹次数为10次的时候,经过了多少米?

1
2
3
4
5
6
7
8
9
<script type="text/javascript">
var sum=0,h=100;
for(i=1;i<=10;i++){
sum=sum+h;//下降高度累加和
sum=sum+h/2;//反弹的高度
h=h/2;//每下降一次,反弹的高度都会为上一次高度的一半
}
document.write("球经过了"+sum+"米");
</script>

34、求1000以内的质数

1
2
3
4
5
6
7
8
9
10
11
//第一种方法
for(i=1;i<=1000;i++){
for(j=2;j<=i;j++){
if(i%j==0){
break;
}
}
if(i<=j&&i!=1){
document.write(i+"&nbsp;\t");
}
}

求质数

1
2
3
4
5
6
7
8
9
10
11
12
13
for(i=2;i<=1000;i++){
var flag=0; //初值为0,后面如果有余数为0的因子,则改变flag的值
for(j=2;j<i;j++){
if(i%j==0){
flag=1;
break;
}
else
flag=0;
}
if(flag==0)
document.write(i+"&nbsp;\t");
}

35、求1000以内的所有完数:完数的所有除了本身以外的因子相加等于它本身:如6=1+2+3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
var num,sum,i;
for(num=6;num<=1000;num++)
{
sum=1; //sum必须每次重新赋值。
for(i=2;i<=num/2;i++) //很多资料都用i<num来作判断条件,不过当num/2<i<num,很明显不存在num%i==0,故完全不需去计算。
if(num%i==0) sum+=i;
if(sum==num)
{
document.write(num+"&nbsp;&nbsp;&nbsp;&nbsp;");
// for(i=2;i<=num/2;i++)
// if(num%i==0) document.write(i+"&nbsp;");
document.write("<br>");
}
}

完数

1
2
3
4
5
6
7
8
9
10
document.write("1000以内的完数有:");
for(i=6;i<=1000;i++){
var sum=1;
for(j=2;j<=i/2;j++){
if(i%j==0)
sum=sum+j;
}
if(sum==i)
document.write(i+"、");
}

完数

1
2
3
4
5
6
7
8
9
10
for(i=1;i<=1000;i++){//在这里i的初始值设为1或者2都是可以的
var sum=0;
for(j=1;j<i;j++){
if(i%j==0){//证明j是i的因子
sum=sum+j;
}
}
if(sum==i)//sum==i和i==sum的结果都一样
document.write(sum+"是完数<br>");
}

36、求1000以内的所有水仙花数,水仙花数是三位数,如153=111+555+333

1
2
3
4
5
6
7
8
9
10
for(i=100;i<1000;i++)
{
var bai=Math.floor(i/100);
var shi=Math.floor(i%100/10);
var ge=i%10;
if(bai*bai*bai+shi*shi*shi+ge*ge*ge==i)
{
document.write(i+"是水仙花数<br>");
}
}

37、判断一个数是不是数字?

1
2
3
4
5
6
7
8
9
10
11
12
13
var str=prompt("请输入一个数字");
if(str==""){
alert("不能为空!");
}else{
//用户输入内容了
if(!isNaN(str)){
//console.log("用户输入的是一个数字");
//在这里调用一个函数,把这个数字传到函数中,判断这个数是不是一个质数
}
else{
console.log("用户输入的不是一个数字");
}
}