C语言第九章习题-2010.10.14更新

更新时间:2023-09-10 13:06:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

练习9-1

一、选择题

1.typedef unsigned long LONG的作用是( )。

A.建立了一种新的数据类型 B.定义了一个整形变量 C.定义了一个长整型变量 D.定义了一个新的数据类型标识符 2.下面的4个运算符中,优先级最低的是( )。

A.( ) B.. C.-> D.++ 3.已知:

struct {int i; char c; float a; } test;

则sizeof(test)的值是( )。 A.4 B.5 C.6 D.7 4.当声明一个结构变量时系统分配给它的内存是( )。

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

A.typedef struct student B.struct student {int num; {int num; float age; float age; } STUDENT std1; } std1; C.struct D.struct {int num; {int num; float age; float age; } std1; } student; struct student std1; 6.根据下面的定义,能打印出字母M的语句是( )。

struct person {char name[9]; int age; };

struct person class[10]={\A.printf(\ B.printf(\C.printf(\ D.printf(\7.以下scanf函数调用语句中对结构变量成员的错误引用是( )。

struct pupil {char nam[20]; int age; int sex

- 1 -

} pup[5], *p; p=pup;

A.scanf(\ B.scanf(\C.scanf(\ D.scanf(\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的是( )。 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的值( ① ),表达式(++p)->x的值是( ② )。

10.下面的程序从终端上输入n个人的年龄、性别和姓名,然后输出。则①是( )、

②是( )、③是( )。 #include \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(\ scanf(\ ② ; } }

- 2 -

data_out(struct man *p, int n) { struct man *q= ③ ; for (; p

三、读程序,写结果。

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

#include struct stu { int num;

char name[10]; int age; };

void fun(struct stu *p)

{ printf(\}

main()

{ struct stu students[3]={{9801,\ fun(students+2); }

12.下列程序输出结果是( )。

#include \struct tree { int x; char *s; } t;

func(struct tree t) { t.x=10;

t.s=\ return(0); }

main() { t.x=1;

t.s=\ func(t);

printf(\}

- 3 -

练习9-2

一、选择题

1.设有以下说明和定义语句,则下面表达式中值为3的是( )。

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.下面对枚举变量的定义中,正确的是( )。

A.enum color {red, blue, green;} a, b; B.enum color={red, blue, green} a,b; C.enum color={\D.enum color {red, blue, green} a, b; 3.执行以下语句后的输出结果是( )。

enum weekday {sun, mon=3, tue, wed, thu}; enum weekday workday; workday=wed;

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

union {int i; char c; float a; } test;

则sizeof(test)的值是( )。 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; 请选择正确的函数调用语句( )。 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.下面程序的运行结果是( )。

#include main() {union { long i; int k;

- 4 -

char ii; char s[4]; } mix;

mix.i=0x12345678;

printf(\ printf(\ printf(\

printf(\ printf(\}

7.下面程序对应的运行结果是( #include main() {union

{ int i[2]; long k; char c[4]; } t, *s=&t; s->i[0]=0x39; s->i[1]=0x38;

printf(\ printf(\

}

)。

- 5 -

本文来源:https://www.bwwdw.com/article/nxqh.html

Top