第九章 习题及答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第九章习题

一、选择题

1.以下选项中不能正确把cl定义成结构体变量的是( )

A)typedef struct B)struct color cl

{ int red; { int red;

int green; int green;

int blue; int blue;

} COLOR; COLOR cl; };

C)struct color D)struct

{ int red; { int red;

int green; int green;

int blue; int blue;

} cl; } cl;

2.有以下说明和定义语句

struct student

{ int age; char num[8];};

struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}}; struct student *p=stu;

以下选项中引用结构体变量成员的表达式错误的是( )

A) (p++)->num B)p->num C)(*p).num D)stu[3].age

3.有以下结构体说明、变量定义和赋值语句

struct STD

{char name[10];

int age;

char sex;

}s[5],*ps;

ps=&s[0];

则以下scanf函数调用语句中错误引用结构体变量成员的是( )。

A)scanf(“%s”,s[0].name); B)scanf(“%d”,&s[0].age);

C)scanf(“%c”,&(ps->sex)); D)scanf(“%d”,ps->age);

4.以下叙述中错误的是()

A)可以通过typedef增加新的类型

B)可以用typedef将已存在的类型用一个新的名字来代表

C)用typedef定义新的类型名后,原有类型名仍有效

D)用typedef可以为各种类型起别名,但不能为变量起别名

5.有以下程序段()

typedef struct node { int data; struct node *next; } *NODE;

NODE p;

以下叙述正确的是(C)

A)p是指向struct node结构变量的指针的指针

B)NODE p;语句出错

C)p是指向struct node结构变量的指针

D)p是struct node结构变量

6.若有以下定义和语句

union data

{ int i; char c; float f;}x;

int y;

则以下语句正确的是( )。

A)x=10.5; B)x.c=101; C)y=x; D)printf(“%d\n”,x);

7.有以下程序

main()

{ union { unsigned int n;

unsigned char c;

}u1;

ul.c=`A`;

printf("%c\n",u1.n);

}

执行后输出结果是()

A) 产生语法错 B) 随机值C) A D) 65

8.有以程序

#include

#include

typedef struct { char name[9]; char sex; float score[2]; } STU;

void f( STU a)

{ STU b={“Zhao” ,’m’,85.0,90.0} ; int i;

strcpy(,);

a.sex=

b.sex;

for(i=0;i<2;i++) a.score[i]=b.score[i];

}

main()

{ STU c={“Qian”,’p’,95.0,92.0};

f(c); printf(“%s,%c,%2.0f,%2.0f\n”,,c.sex,c.score[0],c.score[1]);

}

程序的运行结果是

A)Qian,p,95,92 B) Qian,m,85,90

C)Zhao,p,95,92 D) Zhao,m,85,90

9.现有以下结构体说明和变量定义,如图所示,指针p,q,r分别指向一个链表中连续的三个结点。

struct node

{

char data;

struct node *next;

}*p,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是

A)q->next=r->next; p->next=r; r->next=q;

B) p->next=r; q->next=r->next; r->next=q;

C) q->next=r->next; r->next=q; p->next=r;

D) r->next=q; p->next=r; q-next=r->next;

10.有以下程序段

struct st

{ int x; int *y;}*pt:

int a[]={1,2},b[]={3,4};

struct st c[2]={10,a,20,b};

pt=c;

以下选项中表达式的值为11的是( )

A) *pt->y B) pt->x C) ++pt->x D) (pt++)->x

二、填空题

1.设有说明

struct DATE{int year;int month; int day;};

请写出一条定义语句,该语句定义d为上述结构体变量,并同时为其成员year、month、day 依次赋初值2006、10、1。

2.已有定义如下:

struct node

{ int data;

struct node *next;

} *p;

以下语句调用malloc函数,使指针p指向一个具有struct node类型的动态存储空间。请填空。

p = (struct node *)malloc( );

相关文档
最新文档