阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面的程序利用递归算法计算x和y的最大公约数。 [函数2.1] main ( ) { int x,y,k,t; scanf(" % d% d" , &x, &y);

admin2009-02-15  32

问题 阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。
[说明]
   下面的程序利用递归算法计算x和y的最大公约数。
[函数2.1]
main ( )
{  int x,y,k,t;
   scanf(" % d% d" , &x, &y);
   if(x>y) { t=x;x=y; y=t;}
     (1);
   while(k! =0){
    y=x;
     (2);
    k=y%x;
   }
  prinff( "% d" ,x); }
[函数2.2说明]
函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。
[函数2.2]
fun(ehar * str, char * substr)
{  int x,y,z;
     (3);
    for(x=0;str[ x] ! = ’\O’;x + + )
     for(y=x,z=0;sabstr[z] = =str[y];(4),y+ +)
     if((5)= =’\0’) {
        num + +;
        break;
    }
   return(num);
}

选项

答案(1)k=y%x (2)x=k (3)int num=0 (4)z++ (5)substr[z+1]

解析 (1)~(2)使用递归算法计算x和y的最大公约数时,不妨令y≥x,如果y除x余数得。则x即为所求;否则令y←x,x←余数,继续上述判断。
(3)此处应声明变量num并初始化;
(4)次循环的功能是从str的第y个位置起与substr做比较,循环过程中y和z应同时增1;
(5)若上面的循环重复执行,直到到达substr结束,则表示substr在str中出现一次。
转载请注明原文地址:https://kaotiyun.com/show/RbjZ777K
0

最新回复(0)