练习9-1答案
一、选择题
1typedef unsigned long LONG的作用是( D )
A.建立了一种新的数据类型            B.定义了一个整形变量
C.定义了一个长整型变量                D.定义了一个新的数据类型标识符
2.下面的4个运算符中,优先级最低的是( D )
A(  )                B.                C->                D++
3.已知:
struct
{int i;
    char c;
    float a;
} test;
sizeof(test)的值是( D )
A4                B5                C6                D7
4.当声明一个结构变量时系统分配给它的内存是( A )
A.各成员所需内存量的总和            B.结构中第一个成员所需内存量
C.成员中占内存量最大者所需的容量    D.结构中最后一个成员所需内存量
5.以下对结构类型变量的定义中错误的是( D )
Atypedef struct student                Bstruct student
  {    int num;                                  {int num;
      float age;                                  float age;
  } STUDENT std1;                          } std1;
Cstruct                                Dstruct
  {    int num;                                  {int num;
      float age;                                  float age;
  } std1;                                  } student;
                                              struct student std1;
6.根据下面的定义,能打印出字母M的语句是( D )
struct person
{char name[9];
    int age;
};
struct person class[10]={"John", 17, "Paul", 19, "Mary", 18, "adam", 16};
Aprintf("%c\n", class[3].name);            Bprintf("%c\n", class[3].name[1]);
Cprintf("%c\n", class[2].name[1]);        Dprintf("%c\n", class[2].name[0]);
7.以下scanf函数调用语句中对结构变量成员的错误引用是( D )
struct pupil
{char nam[20];
    int age;
    int sex
} pup[5], *p;
p=pup;
Ascanf("%s", pup[1].name);                Bc语言中structscanf("%d", &pup[0].age);
Cscanf("%d", &(p->sex));                Dscanf("%d", p->age);
8.若有以下程序段:
struct dent
{int n;
    int *m;
};
int a=1, b=2, c=3;
struct dent s[3]={{101, &a}, {102, &b}, {103, &c}};
struct dent *p=s;
则以下表达式中值为2的是( D )
A(p++)->m        B*(p++)->m        C(*p).m            D*(++p)->m
二、填空题
9.已知:
struct
{int x, y;
} s[2]={{1, 2}, {3, 4}}, *p=s;
则表达式++p->x的值( ①2 ),表达式(++p)->x的值是( ②3 )
10.下面的程序从终端上输入n个人的年龄、性别和姓名,然后输出。则( p+n )( gets(p->name) scanf("%s", p->name) )( p+n )
#include "stdio.h"
struct man
{    char name[20];
    unsigned age;
    char sex[7];
};
main()
{    struct man person[5];
    data_in(person, 5);
    data_out(person, 5);
}
data_in(struct man *p, int n)
{    struct man *q= ① ;
    for (; p<q; p++)
    {    printf("age:sex:name");
        scanf("%u%s", &p->age, p->sex);
        ② ;
    }
}
data_out(struct man *p, int n)
{    struct man *q= ③ ;
    for (; p<q; p++)
        printf("%s;%u%s\n", p->name, p->age, p->sex);
}
三、读程序,写结果。
11.下面程序的运行结果是( Zhao )
#include <stdio.h>
struct stu
{    int num;
    char name[10];
    int age;
};
void fun(struct stu *p)
{    printf("%s\n", (*p).name);
}
main()
{ struct stu students[3]={{9801,"Zhang",20},{9802,"Wang",19},{9803,"Zhao",18}};    fun(students+2);
}
12.下列程序输出结果是( 1, ninicomputer )
#include "stdio.h"
struct tree
{    int x;
    char *s;
} t;
func(struct tree t)
{    t.x=10;
    t.s="computer";
    return(0);
}
main()
{    t.x=1;
    t.s="minicomputer";
    func(t);
    printf("%d, %s\n", t.x, t.s);
}

练习9-2答案
一、选择题
1.设有以下说明和定义语句,则下面表达式中值为3的是( D )
struct s
{int i1;
    struct s *i2;
};
static struct s a[3]={1, &a[1], 2, &a[2], 3, &a[0]};
static struct s *ptr;
ptr=&a[1];
Aptr->i1++        Bptr++->i1        C*ptr->i1            D++(ptr->i1)
2.下面对枚举变量的定义中,正确的是( D )
Aenum color {red, blue, green;} a, b;            Benum color={red, blue, green} a,b;
Cenum color={"red", "blue", "green"} a, b;    Denum color {red, blue, green} a, b;
3.执行以下语句后的输出结果是( A )
enum weekday {sun, mon=3, tue, wed, thu};
enum weekday workday;
workday=wed;
printf("%d\n", workday);
A5                B3                C4                D.编译时出错
4.已知:
union
{int i;
    char c;
    float a;
} test;
sizeof(test)的值是( A )
A4                B5                C6                D7
5.已知函数原型为:
struct tree *f(int x1, int *x2, struct tree x3, struct tree *x4)
其中tree为已定义过的结构,且有下列变量定义:struct tree pt, *p; int i;
请选择正确的函数调用语句( B )
A&pt=f(10, &i, pt, p)                    Bp=f(i++, &i, pt, &pt);
Cf=f(i+1, &(i+2), *p, p);                Df(i+1, &i, p, p);
二、读程序,写结果
6.下面程序的运行结果是:
( mix.i=12345678
mix.k=5678
mix.ii=78
mix.s[0]=78□□□□□mix.s[1]=56
mix.s[2]=34□□□□□mix.s[3]=12 )(注:□表示空格。)
#include <stdio.h>
main()
{union
    {    long i;
        int k;
        char ii;
        char s[4];
    } mix;
    mix.i=0x12345678;
    printf("mix.i=%lx\n", mix.i);
    printf("mix.k=%x\n", mix.k);
    printf("mix.ii=%x\n", mix.ii);
    printf("mix.s[0]=%x\tmix.s[1]=%x\n", mix.s[0], mix.s[1]);
    printf("mix.s[2]=%x\tmix.s[3]=%x\n", mix.s[2], mix.s[3]);
}
7.下面程序对应的运行结果是:
( 380039
9 )
#include <stdio.h>
main()
{union
    {    int i[2];
        long k;
        char c[4];
    } t, *s=&t;
    s->i[0]=0x39;
    s->i[1]=0x38;
    printf("%lx\n", s->k);
    printf("%c\n", s->c[0]);
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。