有以下程序: #include int ml(int x,int y) { if(x

admin2020-06-16  33

问题 有以下程序:
    #include
    int ml(int x,int y)
    {  if(x<=y)return 2*x+1;
    else retum y;
    }
    int m2(int x,int y)
    {  if(x<=y)retum 2*y+1;
    else return x:
    }
    main()
    {  int i,t1=10,t2=0;
    for(i=1;i<=4;i++)
    {t1=m1(i,t1);t2=m2(i,t2);}
    prinff(“t1=%d t2=%d\n”,t1,t2);
    }
    程序运行后的输出结果是(    )。

选项 A、t1=9 t2=4
B、t1=4 t2=9
C、t1=9 t2=9
D、t1=1 t2=4

答案A

解析 由程序可知,main函数的for循环中i的取值为1、2、3、4。tl初值为10,t2初值为0,当i=1时,传入函数m1参数为:1、10,因为1<10,所以函数ml的返回值为2×1+1=3;传入函数:m2的参数为1、0,因为1>0,所以返回值为1;即第一轮循环后,tl=3,t2=1。当i_2时,传入函数m1的参数为2、3,因为2<3,所以函数返回值为2×2+1=5;传入函数m2的参数为2、1,因为2>1,所以函数返回值为2;即第二轮循环后,t1=5,t2=2;当i=3时,传入函数ml的参数为3、5,因为3<5,所以返回值为2×3+1=7;传入函数m2的参数为3、2,因为3>2,所以返回值为3;即第三轮循环后,tl=7,t2=3;当i=4时,传入函数m1的参数为4、7,因为4<7,所以函数返回值为2×4+1=9,传入函数m2的参数为4、3,因为4>3,所以函数返回值为4,即第四轮循环后,t1=9,t2=4。故答案选A(仔细分析可以发现,对于m1函数,由于第一次1<10,导致后面每次参数x都是i,而参数y都是2×i一1,返回值都是2×i+1;同理,对于m2函数,由于第一次1>0,导致后面每次参数x都是i,而y都是i一1,返回值都是i,所以最终结果为t1=2×4+1,t 2=4)。
转载请注明原文地址:https://kaotiyun.com/show/NiCp777K
0

最新回复(0)