C1模拟试卷的一个算法题
题目:
使用Math生成一个随机数,这个随机数需要在0到500之间。
然后,在网页中打印出来从10到这个随机数的回文数。
代码实现:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script>var number_of_random = Math.round(Math.random() * 500);
document.write("the random number:" + "</br>" + number_of_random + "</br>");
document.write("numbers:" + "</br>");
if(number_of_random <= 10){
for(var i = number_of_random; i < 10; i = i + 1)
{
document.write(i + "</br>");
}
}else{
for(var i = 10; i <= number_of_random; i = i + 1)
{
var str = i + "";
var newstr = "";
for(let j = 0;j < str.length; j = j + 1)
{
newstr += str.split("")[str.length - 1 - j];
}
if(newstr === str){
document.write(str + "</br>");
}
delete str;
}
}</script>
</head>
<body></body>
</html>
其实本质上,这个地方人家要求的是JavaScript:
var number_of_random = Math.round(Math.random() * 500);
document.write("the random number:" + "</br>" + number_of_random + "</br>");
document.write("numbers:" + "</br>");
if(number_of_random <= 10){
for(var i = number_of_random; i < 10; i = i + 1)
{
document.write(i + "</br>");
}
}else{
for(var i = 10; i <= number_of_random; i = i + 1)
{
var str = i + "";
var newstr = "";
for(let j = 0;j < str.length; j = j + 1)
{
newstr += str.split("")[str.length - 1 - j];
}
if(newstr === str){
document.write(str + "</br>");
}
delete str;
}
}
运行结果示例:
示例一
示例二
示例三
我的问题:
最开始我在进行判断一个数字是不是回文数的时候发生了错误,错误在于,我把那个
for(let j = 0;j < str.length; j = j + 1)
{
newstr += str.split("")[str.length - 1 - j];
}
里面的j < str.length语句写成了小于等于,导致了未定义的数字的出现,从而导致了后面没有办法正确执行了。
这里就是需要进行强调一下,就是一定要注意一下索引的取值范围,千万不可以把索引的取值范围给弄错了。