参考答案和解析
正确答案: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的值又是不断变化的,所以相互之间会产生影响。
更多“设有以下C语言说明语句,则值为210的表达式是(33)。 struct s { int a;int *b;}; Int ”相关问题
  • 第1题:

    下面结构体的定义语句中,错误的是

    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;


    正确答案:B

     

  • 第2题:

    下面结构体的定义语句中,错误的是( )。

    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;


    正确答案:B

  • 第3题:

    设有定义语句:double x=2.5, y=4.7;int a=7;那么表达式x+a%3*(int)(x+ y)%2/4的值为【 】。


    正确答案:2.5
    2.5 解析:本题考核运算符的使用(包括类型、优先级、结合性)。强制类型转换符()将表达式x+y的值转换为int型,那么表达式“a%3*(int) (x+y)%2/4”结果将为整型,计算:7%3*7%2/4的结果为0,而x为double型,所以最后的结果为2.5

  • 第4题:

    若有以下程序段: struct st {int n; int*m: }; int a=2,b=3,c=5; struct st s[3]=({101,&a},{102,&c},{103,&B)}; main() {struct st*p; p=s; } 则以下表达式中值为5的是( )。

    A.(*p).m

    B.*(p+1)->m

    C.*(p++)->n

    D.(p++)(*m)


    正确答案:B

  • 第5题:

    若有以下说明和语句: struct st{int n;char*ch;} struct st a[3]={5,"abc"7,"def",9",ghk"),*p=a; 则值为6的表达式是______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.#NAME?


    正确答案:D
    解析:根据结构变量的存储特点,p+l意味着增加地址值为结构体数组a的—个元素所占的字节数,即P++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加l运行,结果为6。

  • 第6题:

    若有以下说明和语句: struct st{int n;char * ch;}; struct st a[3]={5,"abc",7,"def",9,"ghk"},*p=a; 则值为6的表达式是 ______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.++p->n


    正确答案:D
    解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构体变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。

  • 第7题:

    有以下定义和语句,则sizeof(a) 的值是【 】,而sizeof(a,share)的值是【 】

    struct date

    { int day;

    int mouth;

    int year;

    union{int share1;

    float share2;

    }share;

    }a;


    正确答案:10 4
    10 4 解析:结构体变量所占内存长度是各成员占的内存长度之和。每个成员分分别占有其自己的内存单元。int占2个字节,float占4个字节,共用体变量所占的内存长度等于最长的成员的长度。所以,sizeof(a,share)的值是4,sizeof(a)的值是 2+2+2+4=10。

  • 第8题:

    设有以下语句 ( ) struct st {int n;struct st * next;}; static struct st a [3]={5,&a [1],7,&a[2],9,'\0'},*p; p=&a[0] 则表达式( )的值是6。

    A.p+ + ->n

    B.p->n + +

    C.(* P). n+ +

    D.+ +p - >n


    正确答案:D

  • 第9题:

    下面结构体的定义语句中,错误的是( )。

    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;


    正确答案:A
    A选项stnletonl{intx;inty;int2;struetoraa;错误,不能在定义结构体的同时,又用结构体类型名定义变量。应该写成B选项或者D选项的格式。

  • 第10题:

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

    A.1、1

    B.1、3

    C.2、3

    D.3、3


    正确答案:C
    解析:表达式++p->x中->(指向运算符)优先级高于++(自增运算符),所以先求出p->x中的值1。由于结构体数组元素(或结构体变量)中的成员是有存储单元的,可以像普通变量一样使用,因此++运算是针对s[0].x成员的,即该成员中的值自增后由1变为2。对于表达式(++q)->x,则是q先自增,q指向s[1],输出s[1].x成员中的值3。

  • 第11题:

    若已定义   struct num{    int a;    int b;   float f;  } n={1,3,5.0};  struct num *p=&n;  则表达式p->b/n.a*++p->b的值是  ①  ,表达式(*p).a+p->f的值是  ②  。


    正确答案: ①12
    ②6.0

  • 第12题:

    单选题
    设有说明语句:int k=1,m=2;double d=7.3;,以下表达式中错误的是()。
    A

    k>=m=k

    B

    k++

    C

    k%(int)d

    D

    d>m>k


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

  • 第13题:

    若有以下说明和语句:sturct st { int n;char *ch;}; struct st a[3]={5, "abc",7, "def",9, "ghk"},*p=a;则值为6的表达式是( )。A)p++->n B)p->n++C)(*p).n++ D)++p->n


    正确答案:D
    *p=a,使p指向a的首地址,p->n的值为5,++5的值为6.

  • 第14题:

    下面结构体的定义语句中,错误的是( )。 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;


    正确答案:B
    结构体定义的类型说明的一般形式为:struct结构体标识名{类型名1结构成员名表l;类型名2结构成员名表2;···};。注意:①结构体说明同样要以分号结尾;②紧跟在结构体类型说明之后进行定义;③在说明一个无名结构体类型的同时,直接进行定义;④先说明结构体类型,再单独进行变量定义等。所以B选项错误。

  • 第15题:

    设有C语言变量说明“static int a[][2]={{1,2),(3,4}};int *pa,(*pb)[2];”,则执行语句“pa=pb=&

    设有C语言变量说明“static int a[][2]={{1,2),(3,4}};int *pa,(*pb)[2];”,则执行语句“pa=pb=&a[0][0];”后,(*(pa+1))的值为(31)。

    A.2

    B.3

    C.&a[0][1]

    D.&a[1][0]


    正确答案:A
    解析:对于语句“pa=pb=&a[0][0];”赋值后pb已经变为列指针,则pa也是列指针。在进行TC编译时,会出现“Warning:Suspiciouspointerconversioninfunctionmain”的提示信息,表明pb由行指针变为列指针。

  • 第16题:

    设有以下说明和定义:

    typedef union {long i; int k[5]; char c;} DATE;

    struct data { int cat; DATE cow; double dog;} too;

    DATE max;

    则语句 printf("%d",sizeof(struct date)+sizeof(max));的执行结果是:___52____


    正确答案:
    答:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20
    data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.
    所以结果是 20 + 32 = 52.
    当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20

  • 第17题:

    设有以下说明和定义:includeVoid main() {typedef union{long i; int k[5]; char

    设有以下说明和定义:#include<iostream. h>Void main() {typedef union{long i; int k[5]; char c;}DATE;struct date{iNt cat; DATE cow; double. dog;}too;DATE max;则下列语句的执行结果是( )。cout<<(sizeof(struct date)+sizeof(max))<<end1;}

    A.26

    B.52

    C.18

    D.8


    正确答案:B

  • 第18题:

    下面结构体的定义语句中,错误的是

    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;


    正确答案:B
    解析:定义结构体变量有三种方式:①先声明结构体类型,再定义变量名,如选项A)所示;②在声明类型的同时定义变量,如选项C)所示;③直接定义结构体类型变量,如选项D)所示。 

  • 第19题:

    有以下定义和语句,则sizeof(a.share)的值是( )。

    struct date

    { unsigned int day;

    unsigned int mouth;

    unsigned int year;

    union{int share1;

    float share2;

    }share;

    }a;


    正确答案:4
    4

  • 第20题:

    设有以下说明和定义:typedef union{ long i;int k[5];char c; } DATE;struct date{ int cat;DATE cow;double dog; }too;DATE max;则下列语句的执行结果是______。printf("%d",sizeof (struct date) +sizeof(max));

    A.26

    B.30

    C.18

    D.8


    正确答案:B

  • 第21题:

    设有以下语句: struct st{int n;struct st*next;}; static struct st a[3]={5,&a[1],7,&a[2],9,'\0'},*p; p=&a[0];则表达式的值是6的为______。

    A.p++->n

    B.p->n++

    C.(*p).n++

    D.++p->n


    正确答案:D
    解析:本题主要考查结构体变量的定义和应用,以及运算符的优先级。

  • 第22题:

    设有说明语句int k,i=5,j=10;则表达式k=(++i)*(j--)的值是 ( )

    A.50

    B.60

    C.45

    D.55


    正确答案:B
    本题考查自加和自减运算符的运用。表达式++i的值为6,j——的值为10,故 k=6×10=60。

  • 第23题:

    设有说明语句:int k=1,m=2;double d=7.3;,以下表达式中错误的是()。

    • A、k>=m=k
    • B、k++
    • C、k%(int)d
    • D、d>m>k

    正确答案:A