JS函数练习

[b][size=x-large]练习题目:[/size][/b]

[img]http://dl2.iteye.com/upload/attachment/0117/9717/c9b4e788-f938-3e66-8ed2-e40aef2066c5.jpg[/img]

[size=x-large]练习1:百钱买百鸡[/size]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>百钱买百鸡</title>
<script type="text/javascript">
//cock--公鸡,hen--母鸡,chicken--小鸡
// 普通做法
function doBuy1()
{
var cnt=0;//cnt用于观察循环的次数,以便查看优化效果
for(var cock=1;cock<=100;cock++)
{
for(var hen=1;hen<=100;hen++)
{
for(var chicken=1;chicken<=100;chicken++)
{
cnt++;
if(cock+hen+chicken==100&&cock*5+hen*3+chicken/3==100)
{
console.debug("doBuy1:cock:"+cock+",hen:"+hen+",chicken:"+chicken);
}
}
}
}
console.debug("doBuy1:cnt:"+cnt);
}

// 优化1
function doBuy2()
{
var cnt=0;
//除去必须的一只母鸡一只小鸡,剩余的钱最多买17只公鸡
for(var cock=1;cock<17;cock++)
{
//除去一只公鸡一只小鸡剩余的钱最多买31只母鸡
for(var hen=1;hen<31;hen++)
{
for(var chicken=1;chicken<98;chicken++)
{
cnt++;

if(cock+hen+chicken==100&&cock*5+hen*3+chicken/3==100)
{
console.debug("doBuy2:cock:"+cock+",hen:"+hen+",chicken:"+chicken);
}
}
}
}
console.debug("doBuy2:cnt:"+cnt);
}
// 优化2
function doBuy3()
{
var cnt=0;
var sum=100;
for(var cock=1;cock<17;cock++)
{
for(var hen=1;hen<(100-cock*5)/3;hen++)
{
cnt++;
var chicken=100-cock-hen;
if(cock*5+hen*3+chicken/3==100)
{
console.debug("doBuy3:cock:"+cock+",hen:"+hen+",chicken:"+chicken)
}
}
}
console.debug("doBuy3:cnt:"+cnt);
}
</script>
</head>
<body>
<input type="button" value="doBuy1" onclick="doBuy1()">
<input type="button" value="doBuy2" onclick="doBuy2()">
<input type="button" value="doBuy3" onclick="doBuy3()">
</body>
</html>

[size=large]后台结果:[/size]
[img]http://dl2.iteye.com/upload/attachment/0117/9701/f6d87c09-a3ae-3859-8d6c-c0f4a49c68c6.jpg[/img]
[size=large][color=red]说明:[/color]对程序进行优化,减少for循环语句的循环次数,可以减小系统运行负荷[/size]

[size=x-large]2.练习2:接受用户输入的一个正整奇数,并打印出如题目中所示图形[/size]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>题2</title>
<script type="text/javascript">
function doTest()
{
while(true)
{
//判断输入的数是否为一个正整奇数
//输入错误则通过continue跳出本次循环进入下次循环再输数字
//输入正确则跳出整个循环进去while后面的语句
var n=prompt("请输入一个正整奇数:")*1;
if(n>0 && !(isNaN(n)) && n%2==1)
{
break;
}
else{
continue;
}
}
for(var i=1;i<=n;i++)
{
var str="";
for(var j=1;j<=n;j++)
{
if(i==1 || i==n || j==1 || j==n || i+j==n+1 || i==j)
{
str+="* ";
}
else{
str+=" ";
}
}
console.debug(str);
}
console.debug("n="+n);
}
doTest();
</script>
</head>
<body>

</body>
</html>

[size=large]后台结果显示:[/size]
[img]http://dl2.iteye.com/upload/attachment/0117/9713/c00a5396-b641-3b9a-8a15-269339974c8c.jpg[/img]
[size=x-large]3.练习3:输入一个正整数,求它各位上数字的和[/size]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>题3</title>
<script type="text/javascript">
function doTest()
{
while(true)
{
//判断输入的数是否为一个正整数
//输入错误则通过continue跳出本次循环进入下次循环再输数字
//输入正确则跳出整个循环进去while后面的语句
var num=prompt("请输入一个正整数:");
if(num>0 && !(isNaN(num)))
{
break;
}
else{
continue;
}
}
var sum=0;
for(index in num)
{
sum+=num[index]*1;
}
console.debug("num="+num+";sum="+sum);
}
doTest();
</script>
</head>
<body>

</body>
</html>

[size=large]后台结果展示:[/size]
[img]http://dl2.iteye.com/upload/attachment/0117/9719/0a2c3899-025e-349f-aa36-e8fec63266a2.jpg[/img]
[size=large][color=red]补充说明:[/color][/size]
[list]
[*][size=large]与练习2相比,在用户输入数据后,练习2将在数据后“ *1 ”,因为prompt输入的数据为字符串类型,*1后将其转化为number类型;[/size]
[*][size=large]在练习3中并没有将其数据类型进行转化,利用其string类型的特性,通过for...in遍历每位上的数字,此时通过“ *1 ”方法将其转化为number型逐位相加[/size][/list]
[size=x-large]4.练习4:把用户输入的数据累加,直到输入零为止,输出累加的结果[/size]
function doTest()
{
var sum=0;
while(true)
{
var num=prompt("请输入一个数:")*1;
if(num==0)
{
console.debug("num="+num);
break;
}
else
{
sum+=num;
}
console.debug("num="+num);
}
console.debug("sum="+sum);
}
doTest();

[size=large]后台结果查看:[/size]
[img]http://dl2.iteye.com/upload/attachment/0117/9721/3e055407-dbe0-344b-a26a-b861a9494263.jpg[/img]
[size=large][color=red]补充说明:[/color]"sum=0"这个变量注意放在while循环外部,放在循环内部,则没循环一次,sum都会被重新赋值为0,达不到累加的要求。[/size]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值