阅读以下说明,回答问题1至问题3,将答案填入答题纸对应栏内。 【说明】 在某嵌入式处理器上,编写以下两段程序(编译选项中,存储采用4字节对齐方式)。 程序段1: struct student1{ char name[10]

admin2015-05-21  42

问题     阅读以下说明,回答问题1至问题3,将答案填入答题纸对应栏内。
【说明】
    在某嵌入式处理器上,编写以下两段程序(编译选项中,存储采用4字节对齐方式)。
    程序段1:
    struct  student1{
    char name[10];
    long sno;
    char sex;
    float score[4];
    }*p1,a1,b1;
    程序段2:
    union  student2{
    char name[10];
    long sno ;
    char sex;
    float score[4];
    }*p2,a2,b2;
    汉诺塔问题说明:有n个盘子在A处,盘子从小到大,最上面的盘子最小,程序要把这n个盘子从A处搬到C处,可以在B处暂存,但任何时候都不能出现大的盘子压在小的盘子上面的情况。
    下列是一段求解汉诺塔问题的C语言程序。
    # include
    void move(int n,char a,char c)
    {
    static int Step=l;
    printf(”Step%2d:Disk%d  %c一一一>%c\n”,Step,n,a,c);
    Step++;
    }
    void Hanoi(int n,char a,char b,char c)
    {
    if(n>1)
    {
    Hanoi(n一1,a,c,b);
    move(n,a,c);
    Hanoi(n一1,b,a,c);
}
    e⊥se move(n,  a,c);
    }
    void main()
    {
    Hanoi(3,‘A’,‘B’,  ‘C’);
    }
  回答问题,将答案填写在答题纸中对应栏目。
    (1)sizeof(struct studentl)结果是多少?
    (2)sizeof(union student2)结果是多少?
    (3)变量a2在程序段2中定义,写出执行以下语句后的输出结果。
    Strcpy(a2.name,”zhangwei”);
    a2.sex=‘f’;
    printf(“%S”,a2.name);

选项

答案 (1)sizeof(struct studentl)结果为:31 (2)sizeof(union student2)结果为:16 (3)执行语句后的结果为:“fhangwei”

解析 student1是一个结构体,sizeof(struct studentl)结果为所有元素字节数之和,因此sizeof(struct studentl)结果为:10+4+1+16=31字节。
    student2是联合体(或共用体),sizeof(union student2)结果为其中最长一个元素的字节数。因此sizeof(union student2)结果为:16字节。
    变量a2在程序段2中定义,执行以下语句:
    strcpy(a2.name,“zhangwei”);
    a2.sex=‘f’;
    prinf(“%s”,a2.name);
    结果为:“fhangwei”
转载请注明原文地址:https://kaotiyun.com/show/zQWZ777K
0

相关试题推荐
最新回复(0)