您的位置:首页 > Web前端 > JavaScript

JS函数练习

2016-06-11 00:19 323 查看
[size=x-large]练习题目:[/size]



[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]

[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]

[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]

[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]

[size=large][color=red]补充说明:[/color]"sum=0"这个变量注意放在while循环外部,放在循环内部,则没循环一次,sum都会被重新赋值为0,达不到累加的要求。[/size] 阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: