简答题
👁️ 浏览量:

试题题干

struct prob
{ char *a;
  int b;
} x[ ]={ ″Zhang San″, 19, ″Li Si″, 21, ″Wang Wu″, 20};
main ( )
{  int i, m1, m2;
   m1=m2=x[0].b;
   for (i=1; i<3; i++)
   if (x[i].b>m1)m1=x[i].b;
   else if (x[i].b<m2)m2=x[i].b;
   for (i=0; i<3; i++)
   if (x[i].b!=m1&& x[i].b!=m2)
   {printf (″%s:%d\n″, x[i].a, x[i].b);
    break;
    }

参考答案

试题解析

执行第一个for语句,当i=1时,x[1].b的值为21,符合if语句,即m1=x[1].b=21;

当i=2时,x[2].b的值为20,既不符合if语句,也不符合else if语句;

执行第二个for语句,m1=x[1].b=21,m2=x[0].b=19,当i=0时,x[i].b的值为x[0].b=19,不符合if语句;

当i=1时,x[i].b的值为x[1].b=21,不符合if语句;

当i=2时,x[i].b的值为x[2].b=20,符合if语句,即输出的结果为Wang Wu:20