}
分析:
本题功能要求较多,程序比较长,采用模块求解,根据题目要求分解为若干个模块,即学生信息录入模块、显示模块、每门总分和平均分模块、查找模块、按成绩排序模块。
为了方便各个模块之间传递数据,定义了一个全局变量的记录数组,程序的运行采用菜单方式,方便操作。
7.3教材习题分析与解答
1.选择题
(1)下列关于结构体的说法错误的是()。
A.结构体是由用户自定义的一种数据类型
B.结构体中可设定若干个不同数据类型的成员
C.结构体中成员的数据类型可以是另一个已定义的结构体
D.在定义结构体时,可以为成员设置默认值
答案:
D
分析:
结构体是C++用户自定义的一种构造数据类型,它可以有若干个不同类型的成员,也可以有相同类型成员,在这些成员中可以前所有定义的数据类型,但是在定义结构类型时,成员函数不能设定默认值,所以A、B、C说法无正确,不能选择,只有D的说法是错误的。
(2)下列结构体定义,正确的是()。
A.B.
recordstructrecord
{intno;{intno;
charnum[16];charnum[16];
floatscore;floatscore;
};}
C.D.
structrecordstructrecord
{intno;{intno
charnum[16];charnum[16]
floatscore;};floatscore}
答案:
C
分析:
见本章例1
(3)下列声明结构体变量错误的是()。
A.structstudentB.structstudent
{intno;{intno;
charname[16];charname[16];
}st1,st2;};
structstudentst1,st2;
C.D.
structstudentstructstudent
{intno;{intno;
charname[16];charname[16];
};};
studentst1,st2;structst1,st2;
答案:
D
分析:
见本章例2
(4)若有同下定义,下列说法错误的是()。
structem{
chara;
charb;
}
A.struct是结构体类型关键字B.em是结构体类型名
C.em是用户声明的结构体变量D.a,b是结构体成员名
答案:
C
分析:
由结构体类型定义可知,em是定义的结构体类型名,所以C是错误的,其它选项都是正确的,所以选择C。
(5)若有下列定义,则对结构体变量的成员引用错误的是()。
structdate{intyear;intmonth;intday;}
structstudent{
intno;
charname[16];
datebirthday;
}stud;
A.stud.noB.stud.name
C.stud.birthdayD.stud.birthday.year
答案:
C
分析:
结构体成员表示是结构体变量名.成员名,所以stut.no、stud.name是正确的,A和B不能选择。
C中成员birthday类型还是结构体类型,故stud.birthday不正确,应该是stud.birthday.year或 stud.birthday.month 或 stud.birthday.day。
所以选择C。
(6)若有下列定义,则错误的赋值语句是()。
enumcolor{red,yellow,blue,green}col;
intk;
A.col=redB.col=3
C.k=red+2D.k=red+blue
答案:
B
分析:
由枚举定义知,enum是自定义枚举类型,它有元素red、yellow、blue和green,col是枚举类型的一个变量,它的值应该是枚举元素之一,不能够取整形数,所以A不正确,B正确。
由枚