注册 登录
编程论坛 C++教室

谁教教我这个C语言怎么做?

fevensy 发布于 2008-11-20 13:14, 916 次点击
现有一个班的学生成绩需要处理,共3门课程,学生人数暂时未知。请编写程序,完成如下事情:
1. 统计处理的学生人数
2. 计算每个学生的平均成绩
3. 计算每门课程的平均成绩
4. 程序能输入每个学生的姓名,学号(6位数整数),三门功课的成绩
5. 能输出最后的处理结果,按平均成绩降序排列,格式为:
****班成绩统计
===========================================
学生人数:人数
课程1:平均成绩 课程2:平均成绩 课程3:平均成绩
============================================
学生1 学号1 课程1成绩 课程2成绩 课程3成绩 平均成绩
学生2 学号2 课程1成绩 课程2成绩 课程3成绩 平均成绩
7 回复
#2
asd67918682008-11-20 20:47
鄙视作业题
#3
alweeq862008-11-21 21:43
很简单的一个题,自己想想吧
#4
暴怒的枭兽2008-11-22 09:33
c语言如何输入汉字啊??
#5
hitcolder2008-11-22 10:42
[bo][un]暴怒的枭兽[/un] 在 2008-11-22 09:33 的发言:[/bo]

c语言如何输入汉字啊??



可以用字符数组来输入,比如说:
char ch[5][30];
for(i=0;i<5;i++)
cin<<ch[i];
这样就可以输入汉字了,可能string也可以吧,那个我不会
#6
newyj2008-11-22 11:59
c++版的
有点 小bug
程序代码:

#include<iostream>
#include<sstream>
#include<string>
#include<iomanip>
using namespace std;

class ClaAchievement
{
public:
    ClaAchievement(){}
    double StudentAchievementAvg(){return (CourseA+CourseB+CourseC)/3;}
    static void CourseAchievementAvg();
    static void display();
    friend istream& operator>>(istream& in,ClaAchievement& PP);
    friend ostream& operator<<(ostream& out,ClaAchievement& TT);  
private:
    static int Number;
    static float CourseASum;
    static float CourseBSum;
    static float CourseCSum;
    char name[10];
    long ID;
    int CourseA,CourseB,CourseC;                  
};

int ClaAchievement::Number=0;
float ClaAchievement::CourseASum=0;
float ClaAchievement::CourseBSum=0;
float ClaAchievement::CourseCSum=0;

void ClaAchievement::CourseAchievementAvg()
{cout<<"课程1: "<<CourseASum/3<<"  "
<<"课程2: "<<CourseBSum/3<<"  "
<<"课程3: "<<CourseCSum/3<<endl;}

istream& operator>>(istream& in,ClaAchievement& PP)
{
    ClaAchievement::Number++;     
    string str;
    getline(in,str);
    stringstream sin(str);
    sin>>PP.name>>PP.ID>>PP.CourseA>>PP.CourseB>>PP.CourseC;
    ClaAchievement::CourseASum+=PP.CourseA;
    ClaAchievement::CourseBSum+=PP.CourseB;
    ClaAchievement::CourseCSum+=PP.CourseC;
    return in;         
}

ostream& operator<<(ostream& out,ClaAchievement& TT)
{
    return out<<setw(10)<<TT.name<<"  "<<setw(6)<<TT.ID<<"  "<<setw(4)<<TT.CourseA<<"  "
        <<setw(4)<<TT.CourseB<<"  "<<setw(4)<<TT.CourseC<<"  "<<setw(4)<<TT.StudentAchievementAvg()<<endl;      
}

void ClaAchievement::display()
{
    cout<<"****班成绩统计: "<<endl
        <<"============================================"<<endl
        <<"学生人数:"<<ClaAchievement::Number-1<<endl;
    ClaAchievement::CourseAchievementAvg();
    cout<<"============================================"<<endl;   
}

int main()
{
    int num;
    cout<<"输入学生人数:";
    cin>>num;
    ClaAchievement* ptr=new ClaAchievement[num];
    cout<<"学生姓名 学号 课程1成绩 课程2成绩 课程3成绩:(空格隔开)"<<endl;
    for (int i=0;i!=num+1;++i)
        cin>>ptr[i];
    cout<<endl<<"********************************************************************************"<<endl
        <<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<<endl
        <<"********************************************************************************"<<endl<<endl;
    ClaAchievement::display();
    for (int i=1;i!=num+1;++i)
    {
        cout<<ptr[i];  
    }   
    delete []ptr;
    system("pause");   
    getchar();
    return 0;
}
#7
ldy12042008-11-22 13:08
这么简单,要学习的话自己做啊。。。
#8
小小强122008-11-22 22:36
这个原程序好像有点问题把
1