题库 题库

【简答题】

试题五 (15分)
[说明]
  本题是通过JavaScript语言,在主页上买现一个较为经典的算法…一!用辗转相除法求出用户输入的两个整数的最大公约数,并在此基础上求出两个数的最小公倍数。
视觉效果如图显示: 
    
[HTML文本]
<html>
......
<!-- 省略部分为HTML框架 -->
<form name = "infoform">
<!-- form 部分的 HTML 语句省略 -->
......
<strong> 正整数1; </strong>
<input type = "text" name = "num1">
......
<strong>正整数2; </strong>
<input type = "text" name = "num2">
......
<input type = "button" name = "caculate" value = "请单击这里进行计算" ___(1)___>
......
<strong>最大公约数</strong>
<input type = "text" name = "max_divisor">
......>
<strong>最小公倍数</strong>
<input type = "text" name = "min_multiple">
</form>
<!--以上为Form的定义,以及设定在点击按钮“请单击这里进行计算”时进行正整数的验证以及计算。-->
.....// JavaScript区域开始标识等(略)
function judge (num)
{
if ( num <= 0 )
{ return -1 }
else if ( num > 0 )
{ return l }
else
{ return 0 } ;
}
// judge 函数用于判断变量 num 的值是否为正整数
function caculate (theforln)
{
var li_integer_1, li_integer_2, li_temp //定义两个整数变量与临时变量
var li_com_divisor, li_com_multiple //定义最大公约数与最小公倍数变量
li_integer_1=parseInt( ___(2)___ );
li_integer_2=parseInt( ___(3)___ );
//取出用户输入的数值字符串,并执行字符串(可能是浮点数)向整数的转换
//如果输入的不是数值字符串,parseInt返回的是非数值的特殊值
if (___(n)___)
{ alert( "请输入两个数字!" )
return }
else if ( judge (li_integer_l) !=1 | judge(li_integer_2) != 1 )
{ alert( "请输入正整数!" )
return };
//判断输入的数值是否为正数
theform.num1.value = li_integer_1
theform.num2.value = li_integer_2
//将转换后的正整数写回 form 中,替换用户可能输入的正浮点数
if ( li_integer_1 < li_integer_2 )
{li_integer_1 = li_integer_1 + li_integer_2 ;
___(5)___;
___(6)___;
};
//如果正整数1比正整数2小,将数值对调以便执行辗转相除法
While ( li_integer_1 != li_integer_2)
{ li_integer_1 =li_integer_l - li_integer_2);
if ( li_integer_1 < li_integer_2 )
{
...
该程序段内容同上
};
//如果数 1 小于数 2 ,调换数值
}
//执行辗转相除法
li_com_divisor = li_integer_1;
___(7)___:
//求出最大公约数与最小公倍数
theform.max_divisor.value = li_com_divisor
theform_min_multiple.value = li_com_multiple
//将结果显示在页面上
}
//caculate函数首先判断进行计算的条件,
//然后运用辗转相除法求出最大公约数,
//再利用两个正整数的积除以最大公约数求出最小公倍数。

参考答案

(1) onchick=" caculate(parent)"
(2) theform.num1.value
(3) theform.num2.value
(4) judge(li_integer__l)==0 I judge(Ii_integer_2)==0
(5) li_integer_2=li_integer_1-Ii_integer_2
(6) li_integer_l=Ii_integer_l-Ii_integer_2
(7) li_com_multipe=theform.num1.value*theform.num2.value/li_com_divisor

相关试题