文档库 最新最全的文档下载
当前位置:文档库 › C语言第九章习题带答案

C语言第九章习题带答案

C语言第九章习题带答案
C语言第九章习题带答案

练习9-1答案

一、选择题

1.typedef 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 )。

A.4 B.5 C.6 D.7

4.当声明一个结构变量时系统分配给它的内存是( A )。

A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大者所需的容量D.结构中最后一个成员所需内存量5.以下对结构类型变量的定义中错误的是( D )。

A.typedef struct student B.struct student

{ i nt num; {int num;

float age; float age;

} STUDENT std1; } std1;

C.struct D.struct

{ i nt 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};

A.printf("%c\n", class[3].name); B.printf("%c\n", class[3].name[1]);

C.printf("%c\n", class[2].name[1]); D.printf("%c\n", class[2].name[0]); 7.以下scanf函数调用语句中对结构变量成员的错误引用是( D )。

struct pupil

{char nam[20];

int age;

int sex

} pup[5], *p;

p=pup;

A.scanf("%s", pup[1].name); B.scanf("%d", &pup[0].age);

C.scanf("%d", &(p->sex)); D.scanf("%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

{ printf("age:sex:name");

scanf("%u%s", &p->age, p->sex);

② ;

}

}

data_out(struct man *p, int n)

{ struct man *q= ③ ;

for (; p

printf("%s;%u%s\n", p->name, p->age, p->sex);

}

三、读程序,写结果。

11.下面程序的运行结果是( Zhao )。

#include

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];

A.ptr->i1++ B.ptr++->i1 C.*ptr->i1 D.++(ptr->i1) 2.下面对枚举变量的定义中,正确的是( D )。

A.enum color {red, blue, green;} a, b; B.enum color={red, blue, green} a,b;

C.enum color={"red", "blue", "green"} a, b; D.enum 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);

A.5 B.3 C.4 D.编译时出错4.已知:

union

{int i;

char c;

float a;

} test;

则sizeof(test)的值是( A )。

A.4 B.5 C.6 D.7

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) B.p=f(i++, &i, pt, &pt);

C.f=f(i+1, &(i+2), *p, p); D.f(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

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

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]);

}

相关文档