填空题
以下函数fun用于求两个整数a和b的最大公约数。
fun(a,B)
int a,b;
{int i,j,m,n;
if(a>B)
{m=a;a=b;{{U}} 【18】 {{/U}};}
i=a;j=b;
while((n={{U}} 【19】 {{/U}})!=0)
{j=i;i={{U}} 【20】 {{/U}};}
return(i);
}
【正确答案】
1、【18】b=m
【答案解析】【19】j%i.
【20】n
[评析] 函数中的变量i和j分别存放两个形参的最小数和最大数,在语句i=a和j=b执行之前,要将a和b分别变为最小数和最大数,当a>b时,程序使用中间变量将两者交换,所以题中第—个空中应当填写“b=m”;为求两个整数的最大公约数,程序的where循环条件必须为j整除i成立,所以题中第二个空中应当填写“j%i”;程序要通过i的值返回最大公约数,因此在循环中要将每次整除的公钓数赋给i,以保证最后返回的是两个,整数的最大公约数,所以第三个空中应当填写“n”。