第十三章单元测试
  1. 下列对结构类型变量不正确的定义是( )。

  2. A:struct{
    int num;
    int age; }teacher1,teacher2;
    B:struct teacher{
    int num,age;
    }a;
    C:struct{
    int num;
    int age;
    }teacher
    D:struct teacher{
    int num;
    int age;
    }teacher1;

    答案:struct{
    int num;
    int age;
    }teacher

  3. 设有以下定义语句:
    struct student{
    int num;
    char name[10];
    float score;
    }wang,zhang;
    则变量wang所占的内存字节数(注:在VC环境下要考虑内存对齐规则)是( )。

  4. A:18
    B:20
    C:10
    D:24
  5. 假设有如下的定义:
    struct{
    int n;
    char c;
    float f;
    }rec;
    则以下各个输入语句中,正确的是( )。

  6. A:scanf("%d",rec);
    B:scanf("%c",&rec.c);
    C:scanf("%f",&rec);
    D:scanf("%s",&rec.c);
  7. #include <stdio.h>
    struct abc{
    int a,b,c;
    };
    int main()
    { struct abc s[2]={{1,2,3},{4,5,6}};
    int t;
    t=s[0].a+s[1].b;
    printf("%d\n",t);
    return 0;
    }
    上面程序的输出结果是( )。

  8. A:8
    B:7
    C:6
    D:5
  9. 有以下说明和定义语句
    struct student{
    int age;
    char num[8];
    };
    struct student stu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};
    struct student *p=stu;
    则以下选项中引用结构体变量成员错误的是( )。

  10. A:(p++)->num
    B:p->num
    C:(*p).num
    D:stu[2]->age
  11. struct person {
    char name[9];
    int age;
    };
    struct person class[10]={"John",17, "Paul",19,"Mary",18, "Adam",16};
    根据上面的定义,能打印出字母M的语句是( )。

  12. A:printf("%c\n",class[2].name[1]);
    B:printf("%c\n",class[3].name[1]);
    C:printf("%c\n",class[3].name);
    D:printf("%c\n",class[2].name[0]);
  13. 若有以下程序段:
    struct st{
    int n;
    int *m;
    };
    int a=2,b=3,c=5;
    struct st s[3]=({101,&a},{102,&b},{103,&c});
    int main(){
    struct st *p;
    p=s;
    ...
    }
    则以下表达式中值为5的是( )。

  14. A:*((p+2).m)
    B:*((p+2)->n)
    C:*((p+2)->m)
    D:((p+2)->m)
  15. union{
    short m;
    char a[8];
    }a,*p=&a;
    a.m=100;
    a.a[0]='A’;
    p->a[1]=1;
    printf("%d,%d",sizeof(a),a.m);
    上面程序的运行结果是( )。

  16. A:8, 65
    B:10, 100
    C:8, 100
    D:8, 321
  17. 以下对共用体类型数据的描述中,错误的是( )。

  18. A:共用体类型的定义可以出现在结构类型定义中
    B:共用体变量所占的内存大小,等于占用内存最多的成员所占的内存大小
    C:同一个共用体变量中,各成员长度不同,所以它们的首地址是不相同的
    D:在定义共用体变量的同时允许对它的第一个成员进行初始化
  19. int main()
    {
    struct cmplx { int x; int y; }
    cnum[2]={1,3,2,7};
    printf("%d\n",cnum[0].y /cnum[0].x * cnum[1].x);
    return 0;
    }
    上面程序的输出结果是( )。

  20. A:3
    B:1
    C:0
    D:6
  21. #include<stdio.h>
    union utype{
    int i;
    float f;
    }u[2];
    int main(){
    printf("%d\n",sizeof(u)) ;
    return 0;
    }
    在VC环境下上面程序的运行结果是( )。

  22. A:6
    B:4
    C:8
    D:16
  23. union U{
    short a;
    char b[4];
    }u;
    u.b[0]=2;
    u.b[1]=1;
    u.b[2]=3;
    printf("%hd\n",u.a);
    VC中,上面程序的执行结果是( )。

  24. A:513
    B:其他三个答案都不对
    C:258
    D:130
  25. 关于typedef,以下叙述中错误的是( )。

  26. A:用typedef定义新的类型名后,原有类型名仍有效
    B:可以通过typedef增加新的类型
    C:可以用typedef将已存在的类型名用一个新的名字来代表
    D:用typedef可以给各种已有类型起别名,但不能给变量起别名
  27. 设有以下语句
    typedef struct S{
    int g;
    char h;
    }T;
    则下面叙述中正确的是( )。

  28. A:可用S定义结构体变量
    B:S是struct类型的变量
    C:可以用T定义结构体变量
    D:T是struct S类型的变量
  29. 设有以下定义语句
    struct student{
    int num;
    char name[8];
    float score;
    }a[2];
    则在VC环境下数组a所占内存的字节数是( )。

  30. A:40
    B:16
    C:20
    D:32

温馨提示支付 ¥3.00 元后可查看付费内容,请先翻页预览!
点赞(2) dxwkbang
返回
顶部