有以下程序: #include <iostream> using namespace std; int f1(int x, int y) { return x>y ? x:y; } int f2(int x,

admin2010-03-29  25

问题 有以下程序:    #include <iostream>    using namespace std;    int f1(int x, int y)    {       return x>y ? x:y;    }    int f2(int x, int y)    {       return x>y? y:x;    }    int main ( )    {       int a = 4,b = 3,c = 5,d,e,f;       d = f1(a,b) ;       d = f1(d,c) ;       e = f2 (a,b) ;       e =  f2(e,c) ;       f = a+b+c-d-e;       cout<<d<<", "<<e<<", "<<f<<end1;       return 0;    }    执行后的输出结果是 (   )。

选项 A、3,4,5
B、5,3,4
C、5,4,3
D、3,5,4

答案2

解析 本题考核函数的调用和条件运算符(?)。解此题前,先来复习一下条件运算符的运算规则。
   对于表达式:<表达式1>?<表达式2>:<表达式3>,它的运算方式为:先计算表达式1的值,如果其值为真(true),则表达式2的值就是整个表达式的最终结果,否则表达式3的值就是整个表达式的值。
   在了解条件运算符的运算规则后,来看函数f1()和f2()。根据条件运算符的运算规则,可得到函数f1()的功能是返回两数中的较大值,函数f2()的功能足返回两数中的较小值。再分析主函数,由于a=4,b=3,d经过第1次赋值后得到值为4,即d=4。d的
   第2次赋值表达式为“d=f1(d,C) ”,由于此时d=4、c=5,故经过两次赋值后得到d=5。同样e经过两次赋值后可得e=3。再把a=4、b=3、c=5、d=5、e=3代入表达式 f=a+b+c-d-e,最后得到f=4。
转载请注明原文地址:https://jikaoti.com/ti/fDW0FFFM
0

最新回复(0)