有以下程序段      struct st      {int x;int *y,*pt;      int a[]={l,2},b[]={3,4};      strct st c[2]={10,a,20,b};      pt=c;     以下选项中表达式的值为11的是()  A、*pt→yB、pt→xC、++pt→xD、(pt++)→x

题目

有以下程序段      struct st      {int x;int *y,*pt;      int a[]={l,2},b[]={3,4};      strct st c[2]={10,a,20,b};      pt=c;     以下选项中表达式的值为11的是()  

  • A、*pt→y
  • B、pt→x
  • C、++pt→x
  • D、(pt++)→x

相似考题
更多“有以下程序段      struct st      {int x;int *y,*pt;      int a[]={l,2},b[]={3,4};      strct st c[2]={10,a,20,b};      pt=c;     以下选项中表达式的值为11的是()  A、*pt→yB、pt→xC、++pt→xD、(pt++)→x”相关问题
  • 第1题:

    以下程序运行后,输出结果是define PT5.5define S(x)PT*x*xincludemain(){int a=1,b=

    以下程序运行后,输出结果是 #define PT 5.5 #define S(x) PT*x*x #include<stdio.h> main() { int a=1,b=2; printf("%4.1f\n",s(a+b));}

    A.49.5

    B.9.5

    C.22

    D.45.0


    正确答案:A

  • 第2题:

    有以下程序段: struct st{int x; int *y; } *pt;int a[]={1,2}, b[]={3,4};struct st c[2]={10,a,20,b};pt=c; 以下选项中表达式的值为11的是( )。

    A.*pt->y

    B.pt->x

    C.++pt->x

    D.(pt++)->x


    正确答案:C
    解析:要计算一个复杂的表达式时,首先要弄明白表达式中所有运算符的优先级与结合性,本题中所涉及的运算符中,->的优先级最高,*和++的优先级相同,但其结合性为从右至左。所以选项A等价于*pt->y)也就是pt所指向的结构体的成员指针变量y所指向的内容。从前面的程序段不难看出,pt指向结构体数组c的首地址,也就是指向它的第1个元素,在它的第1个元素中,指针变量y又被初始化为指向控型数组a的首地址,即指向数组a的第1个元素。故选项A中的表达式的值为a[0],也就是1。选项B中表达式的值就是c[0].x,即10。根据优先级和结合性,选项C中的表达式等价于++(pt->x),由于是前缀++,所以整个表达式的值为pt->x的值加1,故为11。而选项D中,++是后缀形式,所以(pt++)的值还是pt的原值,即等于pt->x的值10。故应该选择C。

  • 第3题:

    有以下程序 include struct st { int x,y;} data[2]={1,10,2,20}; main(

    有以下程序 #include <stdio.h> struct st { int x,y;} data[2]={1,10,2,20}; main() { struct st *p=data; printf("%d,",p->y); printf("%d\n",(++p)->x); } 程序的运行结果是______。

    A.10,1

    B.20,1

    C.10,2

    D.20,2


    正确答案:C
    解析:本题定义了一个包含两个元素(data[0]、data[1])的结构体数组data,其中data[0].x=1;data[0].y=10;data[1].x=2; data[1].y=20。在主函数中,定义了一个指向结构体数组的结构体指针变量p,使得p指向结构体数组的首地址,所以p->y访问的是第一个鲒构体数组元素的第二个值,即data[0].y;(++p)->x访问的是第二个结构体数组元素的第一个值,即 data[1].x,所以程序输出结果为10,2。

  • 第4题:

    有下列程序段:

    struct st

    {int x;int*y;}*pt;

    int a[]={1,2},b[]={3,4};

    stmct st c[2]={10,a,20,b};

    pt=c;

    下列选项中表达式的值为11的是( )。

    A.*pt->y

    B.pt->x

    C.++pt->x

    D.(pt++)->X


    正确答案:C
    解析:由题目的已知条件可知,pt指向结构体数组 c[2]的第一元素c(0),所以pt->x=10,执行自加运算后为11。

  • 第5题:

    有下列程序段: struct st {int x;int *y;}*pt; int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; 下列选项中表达式的值为11的是( )。

    A.*pt->y

    B.pt->x

    C.++pt->x

    D.(pt++)->X


    正确答案:C
    解析:由题目的已知条件可知,pt指向结构体数组c[2]的第一元素c[0],所以pt->x=10,执行自加运算后为11。

  • 第6题:

    有以下程序段:

    以下选项中表达式的值为11的是( )。

    A.++pt一>x

    B.pt一>x

    C.*pt一>y

    D.(pt++)一>x


    正确答案:A
    本题考查结构体数组初始化以及结构体变量的引用,题目中定义了一个结构体数组C并初始化,指针pt指向c的第一个元素,那么pt一>x为10,++pt一>x为11,4pt一>Y为1,(pt++)一>x为20,所以答案为A。

  • 第7题:

    以下程序运行后,输出结果是______。 #define PT 5.5 #define S(x) PT*x*x main() { int a=1,b=2;printf("%4.1 f\n",S(a+b)); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B

  • 第8题:

    有以下类定义: class Point { public: Point(int x=0,int y=0){_x=x; _y=y;} void Move(int x Off, int y Off) {_x+=x Off; _y+=y Off; } void Print() const { cout <<'(' << _x << ',' << _y << ')'<< end 1;} private: int _x,_y; }下列语句中会发生编译错误的是______。

    A.Point pt; pr. Print();

    B.const Point pt; pt. Print();

    C.Point pt; pt. Move(1,2);

    D.const Point pt; pt. Move(1,2);


    正确答案:D
    解析:const修饰符改变值出错。

  • 第9题:

    以下程序运行后,输出结果是define PT 5.5define S(x)PT*x*xincludemain(){ int a=1,

    以下程序运行后,输出结果是 #define PT 5.5 #define S(x) PT*x*x #include<stdio.h> main() { int a=1,b=2; printf("%4.1f\n",S(a+b));}

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:A
    解析:宏替换用“#define宏名宏体”的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算。因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。注意:带参数的宏定义。

  • 第10题:

    有以下类定义 class Point{ public: Point{int x = 0, int y=0) {_x = x; _y = y;} void Move int xoff, int yoff) {_x +=xoff;_y+=yoff;} void Print() const {cout<<'('<<_x<<','<<_y<<')' << end1;} private: int_x,_y; }; 下列语句中会发生编译错误的是

    A.Point pt;pt.Print();

    B.const Point pt;pt.Print();

    C.Point pt;pt.Move(1, 2);

    D.const Point pt;pt.Move(1, 2)


    正确答案:D
    解析:本题考核常对象、常数据成员与常成员函数。如果将二个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数,D选项中对象pt为常对象,而成员函数Move()不是常成员函数,所以这样调用会发生编译错误。

  • 第11题:

    单选题
    有以下程序段      struct st      {int x;int *y,*pt;      int a[]={l,2},b[]={3,4};      strct st c[2]={10,a,20,b};      pt=c;     以下选项中表达式的值为11的是()
    A

    *pt→y

    B

    pt→x

    C

    ++pt→x

    D

    (pt++)→x


    正确答案: B
    解析: 暂无解析

  • 第12题:

    单选题
    有以下程序段struct st{ int x; int *y;}*pt;int a[]={1,2},b[]={3,4};struct st c[2]={10,a,20,b};pt=c;以下选项中表达式的值为11的是(  )。
    A

    ++pt->x

    B

    pt->x

    C

    *pt->y

    D

    (pt++)->x


    正确答案: D
    解析:
    pt->x值为10,->优先级高于++,前置++表达式的值为加1之后的值,答案选择A选项。

  • 第13题:

    以下程序运行后,输出结果是 #define PT 5.5 #define S(x)PT* x * x main() {int a=1,b=2; printf("%4.lf\n",S(a+b); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B
    解析:本题考察宏定义的使用,宏在使用是如同函数一样,但却是在编译时展开,而函数却是在运行时进行计算的。

  • 第14题:

    以下程序运行后,输出结果是______。includedefine PT 5.5difine S(x) PT*x*xmain(){i

    以下程序运行后,输出结果是______。 #include<stdio.h> #define PT 5.5 #difine S(x) PT*x*x main() { int a=1,b=2; printf("%4.1f/n",S(a+b)); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B
    解析:C语言中宏替换只是字符替换,因此:S(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5。

  • 第15题:

    有下列程序段: struct st {intx;int*y;}*pt; int a[]={1,2},b[]={3,4}; struct st c[2]={10,a,20,b}; pt=c; 下列选项中表达式的值为11的是( )。

    A.*pt->y

    B.pt->x

    C.++pt->x

    D.(pt++)->x


    正确答案:C
    解析: 由题目的已知条件可知,Pt指向结构体数组c[2]的第一元素c[O],所以pt->x=10,执行自加运算后为11。

  • 第16题:

    执行以下语句段后,xy的值是( )。 int*pt,xy; xy=200; pt=&xy; xy=*pt+30;

    A.200

    B.170

    C.260

    D.230


    正确答案:D
    解析:本题考查指针的运用。通过pt=&xy,将pt指向xy所占有的内存地址,而*pt是指针pt所指向内存单元中的内容,即200,所以最后xy的值为230。

  • 第17题:

    现有两张数据表(MySQL数据库)如下:

    x_pt_info x_user_info

    字段 类型 长度 小数位 字段 类型 长度 小数位

    user_id int 11 user_id int 11

    pt_group int 11 user_name varchar 20

    pt_number decimal 10 2 user_work int 1

    描述一下这个SQL语句的作用:

    SELECT b.user_id as user_id,b.user_name as user_name,round(sum(a.pt_number),2) as ptnum from x_pt_info a,x_user_info b where

    a.user_id=b.user_id and a.pt_group=1 and b.user_work=2 group by a.user_id order by ptnum desc

    另外,就你的经验,你觉得该语句是否有改进的余地,如有,请阐述。


    正确答案:
     

  • 第18题:

    以下程序运行后,输出结果是() include define PT5.5 define S (x)PT* x * x

    以下程序运行后,输出结果是 ( ) # include<stdio.h> # define PT5.5 # define S (x)PT* x * x main( ) { int a=1,b=2; printf("%4.1f\n",s(a+b)); }

    A.49.5

    B.9.5

    C.22

    D.45


    正确答案:B

  • 第19题:

    以下程序运行后,输出结果是( )。 #include<stdio.h> #define PT 5.5 #define S(x)PT*x*X main { int a=1,b=2: printf("%4.1f\n",s(a+b)); }

    A.49.5

    B.9.5

    C.22.0

    D.45.0


    正确答案:B
    本题考查函数调用,由于a+b没有被括起来,所以s(a+b)=PT*a+b*a+b=5.5*1+2*1+2=9.5,故选择B。

  • 第20题:

    以下程序的输出结果是includestruct st{ int x;int *y;}*p;int dt[4]={10,20,30,40};s

    以下程序的输出结果是 #include<stdio.h> struct st { int x;int *y;}*p; int dt[4]={10,20,30,40}; struct st aa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0],}; main() { p=aa; printf("%d\n",++(p->x));}

    A.10

    B.11

    C.51

    D.60


    正确答案:C
    解析:通过指针来引用结构体成员的方法是(指针变量)->结构体成员名。注意:结构体变量中的数据引用。

  • 第21题:

    有下列程序段: struct St {int x;int *y;)*pt; int a[]={1,2),b[]={3,4); struct st c[2]={10,a,20,b); pt=c; 下列选项中表达式的值为11的是( )。

    A.*pt- >y

    B.pt- >x

    C.+ +pt- >x

    D.(pt+ +)->x


    正确答案:C
    解析:由题目的已知条件可知,pt指向结构体数组c[2]的第一元素c[0],所以pt->x=10,执行自加运算后为11。

  • 第22题:

    用指针作函数参数,编程序求一维数组中的最大和最小的元素值。

    #define N 10

    main()

    { void maxmin(int arr[],int *pt1,int *pt2,int n);

    int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b;

    p1=&a; p2=&b;

    maxmin(array,p1,p2,N);

    printf("max=%d,min=%d",a,b);

    }

    void maxmin(int arr[],int *pt1,int *pt2,int n)

    { int i;

    *pt1=*pt2=arr[0];

    for(i=1;i<N;I++)

    { if(arr[i]>*pt1) (9) ;

    if(arr[i]<*pt2) (10) ;

    }

    }


    正确答案:
    4.(9) *ptr1=arr[i] (10) *ptr2=arr[i]

  • 第23题:

    单选题
    若有以下定义:int x[10],*pt=x;则对x数组元素的正确引用是(  )。
    A

    *&x[10]

    B

    *(x+3)

    C

    *(pt+10)

    D

    pt+3


    正确答案: A
    解析:
    数组的下标是从0开始的,故x[10]实际上具体为x[0],x[1],…,x[9],而若使用x[10]就会溢出、编译出错,所以AC两项错误;D项,pt+3指向地址,并未引用到元素;B项的表达正确,代表x[3]中的元素,答案选择B选项。