问答题 [说明] 本程序接收输入的学生信息,包括学号、姓名,成绩,原样输出信息并计算学生的平均成绩。其中学生粪Stud除了包括no(学号)、name(姓名)和grade(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有一个构造函数、一个普通成员函数disp()和一个静态成员函数 avg()用于计算平均分。 [C++程序] #include <stdio.h> #include <string.h> class Stud { int no; char name [10]; int deg; {{U}}(1) {{/U}} int sum; static int num; public: Stud(int n,char na[],int d) { no=n; deg=d; strcpy(name,na); {{U}}(2) {{/U}}; {{U}}(3) {{/U}}; } static double avg() { return {{U}}(4) {{/U}};} void disp() { printf("% -5d% -8s%3d/n",no,name,deg);} }; int Stud:: sum = 0; int Stud:: num=0; void main() { Stud s1(1,"Li",81), s2(2,"Zhao",84.5),s3(3,"Zhang",87); printf("/nNo. Name Grade/n"); s1.disp(); s2.disp(); s3.disp(); printf("Avg=%g/n/n", {{U}}(5) {{/U}}); }
【正确答案】
【答案解析】(1) static (2) sum+=d (3) num++ (4) sum/num (5) Stud::avg() [解析] (1)根据题意,sum数据成员是静态变量; (2)~(3):在Stud类的构造函数中,应该对sum数据成员累加并对num成员增1; (4)avg函数是计算平均数的,所以应该返回syam/num; (5)C++语言程序设计中,类的静态数据成员或函数可以利用类名加作用域分辨符“::”来访问或调用。