下面程序的功能是求整数m、n的最大公约数,请填空。 main() { int m,n,r; scanf("%d,%d",&m,&n); if(【 】){r=m;m=n;n=r;) while(【 】) { r=m

admin2010-01-10  30

问题 下面程序的功能是求整数m、n的最大公约数,请填空。
   main()
   {  int m,n,r;
   scanf("%d,%d",&m,&n);
   if(【  】){r=m;m=n;n=r;)
   while(【  】)
   {  r=m%n;m=n;n=r; }
   printf("%d",m);
   }

选项

答案m<n或n>m r或r!=0

解析 本题使用的是“辗转相除”法求两个数的最大公约数,即以两个数中较大的除以较小的,如果余数不为0,则将较小的数和余数做同样处理,直到被除断为止,此时较小的数就是两个数的最大公约数。本题第一空要求填写一个if语句的判断条件,如果满足此条件则交换m和n的值,再看后面while循环的循环体,使用m%n求余,则此if语句的作用应该是保证m是两个数中较大的那个,故第一空填m<n或n>m。接下来的while循环实现整个辗转相除的过程,其结束条件应该是余数r为0,所以while的循环条件应该填r或r!=0。
转载请注明原文地址:https://kaotiyun.com/show/72Wp777K
0

最新回复(0)