第10章练习 结构体
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
是正确的。二是用结构体类型说明结构体变量。如 B 和 C,即 B 和 C 也是正确。不能只用
结构体关键字去说明结构体变量,即 D 不正确,只能选择 D。
例题 3: 设有以下说明,则正确的赋值表达式为( )。 struct x {int no; char name[20]; float score;} y;
枚举定义知,枚举类型的每个元素,都有一个在定义时按元素位置从左到右默认值,依次是
0,1,2,……。本题中 red 的起始值是 2,所以以后各元素值依次为 3,4,5……。故 green
的值是 5。
例题 7:写出下列程序运行结果:
#include<iostream.h>
struct piont
{ int x; int y; } st[5]={1,2,3,4,5,6,7,8,9,10};
A. y.no=10; B. y->no=10; C. x.no=10;
D. x->n0=10;
答案:A
分析:引用结构体成员是普通变量是:变量.成员,引用结构体指针变量是:变量->成员。
2
3 例题 4: 若已建立如下链表结构,指针 p,q 分别指向如下图所示的结点,用以将 p 所指向
结点从链表中删除并释放该结点的正确程序段是(
7.2 典型例题分析与解答
例题 1:下列结构体定义,正确的是( )。
A.
B.
record {
struct record {
int no;
int no;
char num[16];
char num[16];
float score ;
float score ;
};
}
C.
D.
struct record {
struct record {
};
void average(stud st[])
{int i,j;
float sum;
for(i=0;i<n;i++)
{sum= (1)
;
// 1
for(j=0;j<m;j++)
sum= (2)
; //2
(3)
=sum/m;
//3
}
}
void main()
{stud preson[n]; ...
int no;
int no
char num[16];
char num[16]
float score ; } ; 答案:C
float score }
分析:结构体类型定义必须以关键字 struct 开头,即 A 不正确,不能选择。D 中结构体中
定义成员语名没有用分号结束,故不正确,不能选择 D。根据结构体类型说明形式要求必须
分别表示结构体两个成员,所以运行结果如上所示。
例题 8:下列函数 average 功能是计算 10 名学生 3 门课成绩的平均分,请填空。 #include<iostream.h> const int m=3; const int n=10; struct stud{
int no; char name[16]; float mark[m]; float ave;
答案:B 分析:根据共用体定义规则,系统为其分配存储空间是按其成员中占存储空间最大者分配。
例题 6:设有以下定义枚举型,则元素 green 值是(
)。
enum color {red=2, yellow, blue, green};
A.5
B.4
C.3
D.以上答案均不正确
答案:A
分析:由枚举定义知,enum 是自定义枚举类型,它有元素 red、yellow、blue 和 green,由
)。
data next
……
1
……
q
p
结点结构
A. q->next =p->next
B. delete p;q->next=p->next;
C. q->next=p->next; delete p;
D. p=p->next; q->next=p; delete p;
答案:C
分析:A 虽然在单链表中,把结点 p 跳过,但是结点 p 所占内存空间没有释放。B 是先释放
void main()
{ int i;
piont *p;
p=st;
for(i=0;i<5;i++)
{ cout<<p->x<<'\t'<<p->y<<endl;
p++; }
} 运行结果是:
1
2
3
4
5
6
7
8
9
9
源自文库
10
分析:st 是一个结构体数组,p 是结构体指针变量,并取得结构体数组首地址,p->x 和 p->y
用分号结束,所以 B 和 C 中,只能选择 C。
例题 2:下列声明结构体变量错误的是( )。
A.struct student {
int no; char name[16]; } st1,st2;
B. struct student { int no; char name[16]; };
struct student st1,st2;
C.
D.
struct student {
struct student {
int no;
int no;
char name[16]; };
char name[16]; };
student st1,st2; 答案:D
struct st1,st2;
分析:结构体变量定义有两种方式,一是在定义结构体类型时说明结构体变量,如 A,即 A
average(preson); ...
}
答案:(1) 0.0
(2)sum+st[i].mark[j] (3)st[i].ave
分析:结构体数组定义和结构体成员的表示可得到上述结果。
例题 9:函数 findbook 的功能是:在有 n 个元素的数组 s 中查找名为 a 的书若找到,函数返 回数组下标,否则,函数返回-1,请填空。
结点 p 所占内容空间,以下操作均不正确了。C 在单链表中,把结点 p 跳过,也将结点 p 所
占内存空间释放,所以正确。D 在单链表中,先把 p 从结点 2 移到下一个结点 3,再将 q ->next
连到结点 3,即跳过结点 2,但是删除的是结点 3 而不是结点 2,不正确。
例题 5:在定义一个共用体变量时,系统为其分配存储空间的原则是( )。 A. A. 按所有成员需要的存储空间总和分配。 B.B. 按成员中占存储空间最大者分配。 C.C. 按成员占存储空间最小者分配。 D. D.按第一个成员所需的存储空间分配。
struct data
{ int id;
char name[20];
double price;
} book[100];