设有以下说明,则值为210的表达式是: struct s {int a; int *b;}; int x0[]={110,120},x1[]={210,220}; struct s x[]={{100},{200}}, *p = x; x[0].b = x0; x[1].b = x1;A.*p->bB.(p)->aC.*(p++)->bD.*(p)->b

设有以下说明,则值为210的表达式是: struct s {int a; int *b;}; int x0[]={110,120},x1[]={210,220}; struct s x[]={{100},{200}}, *p = x; x[0].b = x0; x[1].b = x1;

A.*p->b

B.(p)->a

C.*(p++)->b

D.*(p)->b


参考答案和解析
D 解析:注意到本试题中x为结构体数组,则数组名x代表数组首地址。x[0]、x[1]代表结构体数组元素。对于指向结构体数组的指针变量p,每次“+1”则指向下一个结构体数组元素。本题中++p后,由x[0]改指向x[1]。结构体数组x在定义时赋初值,但未对结构体成员b赋初值。语句“x[0].b=x0;x[1].b=x1;”的作用是对结构体数组x的成员b赋初值。对于选项A,(++p)->a等价于x[1].a==200。选项B,*p->b等价于*(x->b)==*x0==110。选项C,*(p++)->b等价于*(x[0].b)==110=x0[0]。选项D,*(++p)->b等价于*(x[1].b)==210=x1[0]。注意,在测试以上1个选项的输出值时,不能放在同一个printf函数中进行输出。因为函数中的参数运算顺序在C语言中是自右向左进行的,而p的值又是不断变化的,所以相互之间会产生影响。

相关考题:

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

下面结构体的定义语句中,错误的是A)struct ord {int x;int y;int z;}; struct ord a;B)struct ord {int x;int y;int z;} struct ord a;C)struct ord {int x;int y;int z;} a;D)struct {int x;int y;int z;} a;

有以下程序:struct s{ int x,y; }data[2]={10,100,20,200};main(){ struct s *p=data;printf("%d\n",(++p)-x);}程序运行后的输出结果是( )。A.10 B.11 C.20 D.21

下列语句段中,正确的是( )。A.struct{int x;float y;int a[2];unsigned b[3];char name[10];};B.struct stu{unsigned a[3];unsigned b[4];}x;int*p=x.a;C.struct stu{int a;float x[4];}y={1,1.0};float data=y.x;D.struct nd{int a,b;unsigned c[2]=5;};

下面结构体的定义语句中,错误的是( )。A.struct ord{int x;int y;int z;};struct ord a;B.struct ord{int x;int y;int z;};ord a;C.struct ord{int x;int y;int z;}a;D.struct{int x;int y;int z;}a;

下面结构体的定义语句中,错误的是( )。 A.struct ord{int x;int Y;int Z;};struet ord a;SXB 下面结构体的定义语句中,错误的是( )。A.struct ord{int x;int Y;int Z;};struet ord a;B.struct ord{int x;int y;int Z;}struct ord a;C.struct ord{int X;int Y;int Z;}a;D.struct{int X;int y;int Z;}a;

设对短路点的正、负、零序综合电抗为X1Σ、X2Σ、X0Σ,且X1Σ=X2Σ,则单相接地短路零序电流比两相接地短路零序电流大的条件是()。 A.X1Σ>X0ΣB.X1ΣC.与X1Σ和X0Σ大小无关

有以下程序段: 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->yB.pt->xC.++pt->xD.(pt++)->x

有以下程序}struct s{ int x,y; } data[2]={10,100,20,200};}main( )}{ struct s *p=data;}printf("%d\n",++(p->x));}程序运行后的输出结果是A.10B.11C.20D.21

有以下程序 include struct tt { int x; struct tt *y; } *p; s 有以下程序 #include <stdio.h> struct tt { int x; struct tt *y; } *p; struct tt a[4]= {20,a+ 1,15,a+2,30,a+3,17,a}; main() { int i; p=a; for(i=1; i<-2; i++) { printf("%d,", p->x ); p=p->y; }A.20,30,B.30,17C.15,30,D.20,15,

下面结构体的定义语句中,错误的是A.struct ord{int x;int y;int z;};struet ord a;B.atruet ord{int x;int y;int z;}struct ord a;C.struet ord{int x;int y;int z;}a;D.struct{int x;int y;int z;)a;

下面结构体的定义语句中,错误的是( )。A.struct ord{int x;int Y;int z;}struct ord a;B.struct ord{int x;im Y;im z;};struct ord a;C.struct ord{int x;int Y;int Z;}a;D.struct{int x;int Y;int z;}a;

以下程序的输出是( )。 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; cout<+<+(p->x); }A.10B.11C.51D.60

以下程序的输出结果是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.10B.11C.51D.60

以下程序的输出结果是( )。include struct s { int x,y; } a[2]={10,100,20,200}; main() { struct s *p=data; printf("%d\n",++(p->x)); } A、10B、11C、20D、21

设有以下C语言说明语句,则值为210的表达式是(33)。 struct s { int a;int *b;}; Int x0[]={110,120},x1[]={210,220}; struct s x[]={{100},{200}},*p=x; x[0].b=x0;x[1].b=x1;A.(++p)->aB.*p->bC.*(p++)->bD.*(++p)->b

设有以下C语言说明语句。 struct { int x,y;} s[2]={{1,2),{3,4}),*p=s,*q=s; 则表达式++p->x和表达式(++q)->x的值分别为(34)。A.1、1B.1、3C.2、3D.3、3

若有以下程序:include using namespace std;class A{public:A() { }A(int i){x1=i;}v 若有以下程序: #include <iostream> using namespace std; class A { public: A() { } A(int i) { x1=i; } void dispa0 { cout<<"x1="<<x1<<","; } private: int x1; }; class B: public A { public: B() { } B(int i):A(i+10) { x2=i; } void dispb() { dispa(); cout<<"x2="<<x2<<endl; } private: int x2; }; int main() { B b(2); b.dispb(); return 0; } 程序运行后的输出结果是( )。A.x1=10,x2=2B.x1=12,x2=10C.x1=12,x2=2D.x1=2,x2=2

下列语句段中,正确的是( )。A.struct { int x; float y; int a[2]; unsigned b[3]; char name[ 10]; };B.struct stu { unsigned a[3]; unsigned b[4]; }x; int *p= x.a;C.street stu { int a; float x[4]; }y={1,1.0}; float data=y.x;D.struct nd {int a,b; unsigned c[2]=5; };

阅读以下C++代码,填充(1)~(5)的空缺,将解答填入答题纸的对应栏内。 【说明】在下面程序横线处填上适当的字句,使其输出结果为:x=5x=6y=7x=8z=9【程序】#include<iostream.h>class X1{int x;(1):X1(int xx=0){x=xx;}(2)void Output()(cout<<"x="<<x<<end;}};(3)Y1:public X1{int y;public:Y1(int xx=0,int yy=0):X1(xx){y=yy;}(2)void Output(){(4)Output();cout<<"y="<<y<<end1;}};class Z1:pubtic X1{int z:(5):Z1(int xx=0,int zz=0):X1(xx){z=zz;}②void Output(){X1::Output();cout<<"z="<<z<<end1;}};void main(){X1 a(5);Y1 b(6,7);Z1 c(8,9);X1*p[3]={For(int i=0;i<3;i++){p[i]-->Output();cout<<end1;}}

以下C语言程序的输出结果是( )。struct s{int x,y;}data[2]={10,100,20,200};main( ){struct s*p=data;p++;printf(“%d\n”,++(p->x));}A.10B.11C.20D.21

LA1A3333设对短路点的正、负、零序综合电抗为X1∑、X2∑、X0∑、且X1∑=X2∑,则单相接地短路零序电流比两相接地短路零序电流大的条件是( )。(A)X1∑>X0∑<(B)X1∑<X0∑(C)X1∑=X0∑(D)X1∑和X0∑大小无关

同一条输电线三序电抗X1,X2,X0的大小关系是()。A、X1>X2>X0B、X1=X2>X0C、X1=X2<X0D、X2>1>X0

两个浮点数X0和X1比较相等时,应该用()比较。A、X0==X1B、X1-X0εC、∣X0-X1∣εD、X0=X1

有以下说明语句:struct point{int x;int y;}p;则正确的赋值语句是()A、point.x=1;point.y=2;B、point={1,2};C、p.x=1;p.y=2;D、p={1,2};

当()时的系统属于大接地电流系统。A、X0/X1≤3—4B、X0/X1≤4—5C、X0/X1≤5—6D、X0/X1≤10—20

单选题有以下程序:#includestruct S{int a;int *b;};main(){ int x1[] = {3,4},x2[] = {6,7}; struct S x[] = {1,x1,2,x2}; printf(%d,%d,*x[0].b,*x[1].b);}程序的运行结果是(  )。A1,2B3,6C4,7D变量的地址值

单选题有以下程序段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-xBpt-xC*pt-yD(pt++)-x