| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 669 人关注过本帖
标题:刚刚接触C++,有有一道题目做不出来,求帮助
只看楼主 加入收藏
红尘梦123456
Rank: 1
来 自:中国
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-12-9
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
刚刚接触C++,有有一道题目做不出来,求帮助
设计一个学生类CStudent,其结构如下:
    私有数据成员Name(学生姓名)、Degree(成绩)、Level[7](成绩等级);
    构造函数对数据成员初始化;
    设计一个CStudents的友元类CProcess,其结构包含两个成员函数:
    void Transform(CStudent& s);实现对s的数据成员Level的判断其成绩的等级,:>=90为优秀;80~89为良好;70~79为中等;60~69为及格;< 60为不及格;
    void Display(CStudent& s)输出s成绩的等级;
    输出结果如下:
姓名    成绩    等级
Mary    78    中等
Jack    93    优秀
Mike    54    不及格
John    88    良好

搜索更多相关主题的帖子: 学生 姓名 
2010-12-09 12:40
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:10 
程序代码:
#include <iostream.h>
#include <string.h>
class Student
{
    friend class CProcess;
private:
    char *name;
    int  socre;
    int  lev[5];
public:
    Student(char *name,int socre);
    ~Student();
};
Student::Student(char *name,int socre)
{
    this->name=new char[strlen(name)+1];
    strcpy(this->name,name);
    this->socre=socre;
    for(int i=0;i<5;i++)
    {
        this->lev[i]=0;//等于1的位置代表等级  例如 lev[0]=1  代表不及格
    }
}
Student::~Student()
{
    ;
}
class CProcess
{
public:
    CProcess()
    {;}
    ~CProcess()
    {;}
    void Transform(Student& s);
    void Display(Student& s);
};
void CProcess::Transform(Student& s)
{
    if(s.socre>=90)/////开始判定
        s.lev[4]=1;
    if(s.socre>=80&&s.socre<=89)
        s.lev[3]=1;
    if(s.socre>=70&&s.socre<=79)
        s.lev[2]=1;
    if(s.socre>=60&&s.socre<=69)
        s.lev[1]=1;
    if(s.socre<=60)
        s.lev[0]=1;
}
void CProcess::Display(Student& s)
{
    cout<<"姓名:"<<s.name;
    cout<<"成绩 :"<<s.socre;
    for(int i=0;i<5;i++)
    {
        if(s.lev[i]==1)
           cout<<"等级 :"<<i;
    }
}
int main()
{
    Student s("yang",92);
    CProcess p;
    p.Transform(s);
    p.Display(s);
    return 0;
}
好了  你可以去测试了  主函数自己写一个   如果是作业 对不起你们老师了  呵呵

                                         
===========深入<----------------->浅出============
2010-12-09 13:55
红尘梦123456
Rank: 1
来 自:中国
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-12-9
收藏
得分:0 
嘿嘿,谢谢了,我仔细研究研究
2010-12-09 16:12
zhangnanok1
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-12-10
收藏
得分:0 
调试出错啊   syntax error : identifier 's'

void CProcess::Transform(CStudent& s)
{
    if s.degree>=90
        s.Level[4]=1;
    if (s.degree>=80 && s.degree<90)
        s.Level[3]=1;
    if    (s.degree>=70 && s.degree<80)
        s.Level[2]=1;
    if (s.degree>=60 && s.degree<70)
        s.Level[1]=1;
    if s.degree<60
        s.Level[0]=1;
};
2010-12-10 16:35
Mack2
Rank: 1
来 自:山东
等 级:新手上路
帖 子:8
专家分:2
注 册:2010-11-26
收藏
得分:0 
#include<iostream.h>
#include<string.h>
class CProcess;
class CStudent
{
    public:
    CStudent();
    friend class CProcess;
    private:
        char Name[10];
        float Degree;
        char*Level;
};
class CProcess
{
public:
 void Transform(CStudent& s);
 void Display(CStudent& s);
};
CStudent::CStudent()
{
    char na[10];
    float de;
    cout<<"输入姓名:"<<endl;
    cin>>na;
    cout<<"输入成绩:"<<endl;
    cin>>de;
    strcpy(Name,na);
    Degree=de;
}
void CProcess::Transform(CStudent& s)
{
    if(s.Degree>=90)
        s.Level="优秀";
    else if(s.Degree>=80)
        s.Level="良好";
    else if(s.Degree>=70)
        s.Level="中等";
    else if(s.Degree>=60)
        s.Level="及格";
    else
        s.Level="不及格";
        
}
void CProcess::Display(CStudent& s)
{
   
    cout<<s.Name<<"    "<<s.Degree<<"     "<<s.Level<<endl;
}
int main()
{
CStudent stu1,stu2,stu3,stu4;
CProcess po;
po.Transform(stu1);
po.Transform(stu2);
po.Transform(stu3);po.Transform(stu4);
cout<<"姓名"<<"    "<<" 成绩 "<<"    "<<"等级"<<endl;
po.Display(stu1);
po.Display(stu2);
po.Display(stu3);po.Display(stu4);
return 0;
}
此程序是很简单的,核心是明白友元类特点,但是在平时要慎重的应用友元。
2010-12-10 21:01
快速回复:刚刚接触C++,有有一道题目做不出来,求帮助
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030763 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved