若有以下程序段; #include<iostream> using namespace std; int main() { int a[]={1,4,5}; int *p=&a[0],x=6,y,z;

admin2010-03-29  25

问题 若有以下程序段;    #include<iostream>    using namespace std;    int main()    {       int a[]={1,4,5};       int *p=&a[0],x=6,y,z;       for(y=0;y<3;y++)          z=((*(p+y)<x)  ?  *(p+y):x);       cout<<z<<end1;       return 0;    }    程序运行后的输出结果是(    )。

选项 A、1
B、4
C、5
D、2

答案4

解析 本题考核指针的运算。
   ①程序首先定义了一整型数组a,并赋初值1,4,5。即a[0],a[1]和a[2]的值分别为1,4和5。程序还定义了一个整型指针p,并初始化它指向数组元素a[0]。
   ②在for循环语句中,赋值语句“z=((*(p+y)<x)?*(p+y):x);”可等价为:“z=(aly]<x)?a[y]:x”。因为表达式中的“*(p+y)=p[y]=a[y]”。
   ③for语句每循环一次,就给变量z重新赋值一次,z的值其实就是数组和x相比较,将数组a中的最大值赋给z。当y=2后,退出循环,输出结果是5。
转载请注明原文地址:https://jikaoti.com/ti/qKW0FFFM
0

最新回复(0)