您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> C十十 >> 辅导 >> 正文    
  C++习题与解析(类和对象-09) 【注册男护士专用博客】          

C++习题与解析(类和对象-09)

www.nanhushi.com     佚名   不详 

题19.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求输出这些学生数据并计算平均分。 
解: 
设计一个学生类Stud,除了包括no(学号)、name(姓名)和deg(成绩)数据成员外,有两个静态变量sum和num,分别存放总分和人数,另有两个普通成员函数setdata()和disp(),分别用于给数据成员赋值和输出数据成员的值,另有一个静态成员函数avg(),它用于计算平均分。在main()函数中定义了一个对象数组用于存储输入的学生数据。 
本题程序如下: 
#include<stdio.h> 
#include<string.h> 
#define N 3 
class Stud 

int no; 
char name[10]; 
int deg; 
static int num; 
static int sum; 
public: 
void setdata(int n,char na[],int d) 

no=n; deg=d; 
strcpy(name,na); 
sum+=d; 
num++; 

static double avg() 

return sum/num; 

void disp() 

printf(" %-5d%-8s%3d\n",no,name,deg); 

}; 
int Stud::sum=0; 
int Stud::num=0; 

void main() 

Stud st[N]; 
int i,n,d; 
char na[10]; 
for(i=0;i<N;i++) 

printf("输入学号 姓名 成绩:"); 
scanf("%d%s%d",&n,na,&d); 
st[i].setdata(n,na,d); 

printf("输出数据\n"); 
printf(" 学号 姓名 成绩\n"); 
for(i=0;i<N;i++) 
st[i].disp(); 
printf(" 平均分=%g\n\n",Stud::avg()); 


本程序的执行结果如下: 
输入学号 姓名 成绩: 1 stud1 89 
输入学号 姓名 成绩: 2 stud2 78 
输入学号 姓名 成绩: 3 stud 84 
输出数据 
学号 姓名 成绩 
1 stud1 89 
2 stud2 78 
3 stud3 84 
平均分=83 


题20.编写一个程序,已有若干个学生数据,这些数据包括学号、姓名、语文成绩、数学成绩和英语成绩,求各门功课的平均分。要求设计不同的成员函数求各门课程的平均分,并使用成员函数指针调用它们。 
解: 
设计一个学生类student,包括no(学号)、name(姓名)、deg1(语文成绩)、deg2(数学成绩)、deg3(英语成绩)数据成员和三个静态数据成员sum1(累计语文总分)、sum2(累计数学部分)、sum3(累计英语总分);另外有一个构造函数和三个求平均分的成员函数和一个disp()成员函数。 
本题程序如下: 
#include<stdio.h> 
#include<string.h> 
#define N 4 
class student 

int no; 
char name[10]; 
int deg1; // 语文成绩 
int deg2; // 数学成绩 
int deg3; // 英语成绩 
static int sum1; // 语文总分 
static int sum2; // 数学总分 
static int sum3; // 英语总分 
public: 
student(int n,char na[],int d1,int d2,int d3) 

no=n; 
strcpy(name,na); 
deg1=d1;deg2=d2;deg3=d3; 
sum1+=deg1;sum2+=deg2;sum3+=deg3; 

double avg1(){return (sum1*1.0)/N;} 
double avg2(){return (sum2*1.0)/N;} 
double avg3(){return (sum3*1.0)/N;} 
void disp() 

printf(" %4d%10s%6d%6d%6d\n",no,name,deg1,deg2,deg3); 

}; 
int student::sum1=0; 
int student::sum2=0; 
int student::sum3=0; 

void main() 

double (student::*fp)(); // 定义成员函数指针 
student s1(1,"Li",67,89,90); 
student s2(2,"Ma",67,89,90); 
student s3(3,"Zheng",67,89,90); 
student s4(4,"Chen",67,89,90); 
printf("输出结果\n"); 
s1.disp(); 
s2.disp(); 
s3.disp(); 
s4.disp(); 
fp=student::avg1; 
printf(" 语文平均分:%g\n",(s1.*fp)()); 
fp=student::avg2; 
printf(" 数学平均分:%g\n",(s1.*fp)()); 
fp=student::avg3; 
printf(" 英语平均分:%g\n",(s1.*fp)()); 

本程序的执行结果如下: 
输出结果 
1 Li 67 89 90 
2 M 89 89 90 
3 Zheng 67 89 90 
4 Chen 67 89 90 
语文平均分:67 
数学平均分:89 
英语平均分:90 



题21.编写一个程序,输入N个学生数据,包括学号、姓名、成绩,要求只输出成绩在80~89分的学生数据。 
解: 
设计一个学生类Stud,包括no(学号)、name(姓名)和deg(成绩)数据成员,另有两个普通成员函数setdata()和disp(),前者用于设置对象数据,后者用于只输出成绩在80~89分数段的学生数据。在main()函数中定义了一个对象数组,用于存储输入的学生数据。 
本题程序如下: 
#include<stdio.h> 
#include<string.h> 
#define N 3 
class Stud 

int no; 
char name[10]; 
int deg; 
public: 
void setdata(int n,char na[],int d) 

no=n; deg=d; 
strcpy(name,na); 

void disp() 

if(deg>=80&&deg<=89) 
printf(" %-5d%-8s%3d\n",no,name,deg); 

}; 

void main() 

Stud st[N]; 
int i,n,d; 
char na[10]; 
for(i=0;i<N;i++) 

printf("输入学号 姓名 成绩:"); 
scanf("%d%s%d",&n,na,&d); 
st[i].setdata(n,na,d); 

printf("输出数据\n"); 
printf(" 学号 姓名 成绩\n"); 
for(i=0;i<N;i++) 
st[i].disp(); 

本程序执行结果如下: 
输入学号 姓名 成绩: 1 stud1 78 
输入学号 姓名 成绩: 2 stud2 85 
输入学号 姓名 成绩: 3 stud3 89 
输出数据 
学号 姓名 成绩 
2 stud2 85 
3 stud3 89 

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。