唐僧爱吃唐僧肉 2017-06-07 01:49 采纳率: 16.7%
浏览 1596

小女不会,求大神过来相教

若能使程序运行后的输出结果如下:
201501
201502
201503
则空白处填写的表达式或语句应该是
#include 
struct student
 { 
     int age;
     char num[8];
  };
   
int main()
{
    struct student stu[3]={{20,"201501"},{21,"201502"},{19,"201503"}};
    struct student *p=stu;
    
    ____________________
     
    return 0;
}

A.
    printf("%s\n",(p++).num);
    printf("%s\n",(p++).num);
    printf("%s\n",(p++).num);

B.
    printf("%s\n",(++p)->num);
    printf("%s\n",(++p)->num);
    printf("%s\n",(*p).num);

C.
    printf("%s\n",stu[0]->num);
    printf("%s\n",stu[1]->num);
    printf("%s\n",stu[2]->num);

D.
    printf("%s\n",(*p).num);
    printf("%s\n",(++p)->num);
    printf("%s\n",stu[2].num);
我感觉好像都对啊!!!好纠结。可否挨个讲一下?
还有这题:
若有以下说明,则下面哪个叙述是正确的(已知short占2个字节,float占4个字节)。
struct 
{   
    short a;
    float b;
} v1;

union 
{   
    short a;
    float b;
} v2;

A.
执行sizeof(v1)获得的结果是8个字节,对结构体变量v1中的任何一个成员都可以进行初始化。

B.
执行sizeof(v2)获得的结果是6个字节,对共用体变量v2中的任何一个成员都可以进行初始化。

C.
执行sizeof(v2)获得的结果是6个字节,只能对共用体变量v2中的第一个成员进行初始化。

D.
执行sizeof(v1)获得的结果是4个字节,对结构体变量v1中的任何一个成员都可以进行初始化。
我感觉v1是六个字节,而v2是四个字节……

  • 写回答

7条回答 默认 最新

  • 帝壹 2017-06-07 01:59
    关注

    应该选D。
    A和C,p是指针,因此取成员值时应该为(p++)->num, stu[N]是实体,取成员值时应该是 stu[0].num;
    B选项,考察++p和p++的区别,p++先取值后自加,因此(p++)的值还是p;++p先自加再取值,所以(++p)的值是(p+1),
    所以B选项第一行打印的是201502.

    评论

报告相同问题?