有以下程序: #include<stdio.h> int m1(int x,int y) {if(x<=y)return 2*x+1; else return y; } int m2(int x,int y) {if(x<=y)return2*y+1; e

admin2016-09-03  27

问题 有以下程序:
#include<stdio.h>
int m1(int x,int y)
{if(x<=y)return 2*x+1;
else return y;
}
int m2(int x,int y)
{if(x<=y)return2*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);}
printf("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。t1初值为10,t2初值为0,当i=1时,传入函数m1参数为:1、10,因为1<10,所以函数m1的返回值为2×1+1=3;传入函数m2的参数为1、0,因为1>0,所以返回值为1;即第一轮循环后,t1=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时,传入函数m1的参数为3、5,因为3<5,所以返回值为2×3+1=7;传入函数m2的参数为3、2,因为3>2,所以返回值为3;即第三轮循环后,t1=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,t2=4)。
转载请注明原文地址:https://jikaoti.com/ti/PPkiFFFM
0

相关试题推荐
最新回复(0)