用C++编写程序统计学生某一课程考试成绩

要求:输入全班学生的考试成绩,计算平均成绩并找出其中的最高分与最低分。(提示,批量数据输入通常不事先规定输入次数,而是以一个特殊的标志作为输入结束。程序根据结束标志统计人数)
必须要使用C++,不要使用C语言,谢谢

//代码:
#include<iostream.h>
void main(void)
{ cout<<"请输入全班同学的的成绩:(以输入负数为结束标志)\n";
int score[150];
int i,n=0,max,min;
double sum=0;
for(i=0;;i++)
{
cin>>score[i];
if(score[i]<0)break;
n++;//统计总共输入了多少个人的成绩
}//以输入负数为结束标志
cout<<n<<"个有效成绩"<<endl;
for(i=0;i<n;i++)
sum=sum+score[i]/double(n);
cout<<"平均成绩:"<<sum<<endl;
max=min=score[0];//max、min分别用来存放最高分和最低分,不妨把第一个人的成绩作为初值赋给它们
for(i=0;i<n;i++)
{
if(max<score[i])max=score[i];
if(min>score[i])min=score[i];
}
cout<<"最高分:"<<max<<endl;
cout<<"最低分:"<<min<<endl;
}
还有问题可以Hi我!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-10-29
#include <iostream>
using namespace std;
int main()
{
float score,sum,max,min;
int count;
cout<<"依次输入成绩:(输入 -1 结束输入)"<<endl;
cin>>score;
if(score<0||score>100)
cout<<"输入成绩有误!请重新输入:"<<endl;
sum=score;
max=min=score;
count=1;
while(cin>>score)
{
if(score==-1)break;
if(score<0||score>100)
{
cout<<"输入成绩有误!请重新输入:"<<endl;
continue;
}
sum+=score;
count++;
if(score>max)max=score;
if(score<min)min=score;
}
cout<<"共输入成绩 "<<count<<"份,其中"<<endl<<"最高分为:"<<max<<endl<<"最低分为:"<<min<<endl
<<"平均分为:"<<sum/count<<endl;
return 1;
}
第2个回答  2009-10-29
#include<iostream>
#include <string>
using namespace std;
class linknode
{
public:
linknode()
{
num=0;
name="";
data=0;
next=NULL;
}
linknode(int thenum,string thename,int a, linknode *b=NULL)
{
num=thenum;
name=thename;
data=a;
next=b;
}
linknode(linknode &newnode)
{
num=newnode.num;
name=newnode.name;
data=newnode.data;
next=newnode.next;
}
string name;
int data,num;
linknode *next;
};
class linerlistlink
{
public:
linerlistlink()
{
first=current=new linknode;
}
~linerlistlink()
{
makeempty();
delete first;
}
void insert()
{
int data,num;string name;
for(current=first;current->next!=NULL;current=current->next){}
cout<<"请输入该学生的姓名:"<<endl;
cin>>name;
cout<<"请输入该学生的学号:"<<endl;
cin>>num;
cout<<"请输入该学生的成绩:"<<endl;
cin>>data;
linknode *newnode=new linknode(num,name,data,NULL);
current->next=newnode;
first->data++;
cout<<"插入完成!"<<endl;
}
bool makeempty()
{
for(current=first->next;current!=NULL;)
{
linknode *tempnode=current;
current=current->next;
delete tempnode;
}
first->data=0;
cout<<"成绩表删除成功!"<<endl;
return true;
}
void searchnum()
{
if(first->data==0)
cout<<"当前成绩表为空!"<<endl;
else
{
cout<<"请输入学生学号:"<<endl;
int tempnum;
cin>>tempnum;
int count=1,tag=0;
for(current=first->next;current->next!=NULL;count++)
{
if(current->num==tempnum)
{
cout<<current->num<<" "<<current->name<<" "<<current->data<<endl;
tag=1;
}
current=current->next;
}
if (tag==0)
cout<<"成绩表中没有对应数据!"<<endl;
else
cout<<"搜索完成!"<<endl;
}
}
void coutlinerlistlink()
{
if(first->data==0)
cout<<"当前成绩表为空!"<<endl;
else
{
int i=1;
for (current=first->next;current!=NULL;)
{
cout<<current->num<<" "<<current->name<<" "<<current->data<<endl;
i++;
current=current->next;
}
cout<<"输出完成!"<<endl;
}
}
int getsize()
{
cout<<"当前成绩表的容量为:"<<first->data<<endl;
return first->data;
}
bool del()
{
if(first->data==0)
{
cout<<"当前成绩表为空!"<<endl;
return true;
}
else
{
int i=0;
cout<<"请输入要删除的学生的学号"<<endl;
cin>>i;
for(current=first;current->next->num!=i;)
current=current->next;
linknode *tempnode=current->next;
current->next=tempnode->next;
delete tempnode;
first->data--;
cout<<"删除完成!"<<endl;
return true;
}
}
int getmin()
{
if(first->data==0)
{
cout<<"当前成绩表为空!"<<endl;
return 0;
}
else
{
int minadd=1,tempmin=first->next->data;string tempname=NULL;
for(current=first->next;current!=NULL;)
{
if(tempmin>current->data)
{
tempmin=current->data;
tempname=current->name;
}
current=current->next;
minadd++;
}
cout<<"当前成绩表的最差成绩为:"<<endl
<<tempname<<": "<<tempmin<<endl;
return minadd;
}
}
int getmax()
{
if(first->data==0)
{
cout<<"当前成绩表为空!"<<endl;
return 0;
}
int maxadd=1,tempmax=first->next->data;string tempname;
for(current=first->next;current!=NULL;)
{
if(tempmax<current->data)
{
tempmax=current->data;
tempname=current->name;
}
current=current->next;
maxadd++;
}
cout<<"当前成绩表的最好成绩为:"<<endl
<<tempname<<": "<<tempmax<<endl;
return maxadd;
}
void sorta_z()
{
current=first->next;
int i=1;
for (;i<first->data;i++)
{
int tempdata;
linknode *currentin=current->next;
for(int a=0;a<first->data-i;a++)
{
if(current->data>currentin->data)
{
tempdata=currentin->data;
currentin->data=current->data;
current->data=tempdata;

}
currentin=currentin->next;
}
current=current->next;
}
cout<<"按成绩从小到大排序完成!"<<endl;
}
void sortz_a()
{
current=first->next;
int i=1;
for (;i<first->data;i++)
{
int tempdata;
linknode *currentin=current->next;
for(int a=0;a<first->data-i;a++)
{
if(current->data<currentin->data)
{
tempdata=currentin->data;
currentin->data=current->data;
current->data=tempdata;
}
currentin=currentin->next;
}
current=current->next;
}
cout<<"按成绩从大到小排序完成!"<<endl;
}
void sortnuma_z()
{
current=first->next;
int i=1;
for (;i<first->data;i++)
{
int tempdata,tempnum;string tempname;
linknode *currentin=current->next;
for(int a=0;a<first->data-i;a++)
{
if(current->num>currentin->num)
{
tempdata=currentin->data;
currentin->data=current->data;
current->data=tempdata;
tempnum=currentin->num;
currentin->num=current->num;
current->num=tempnum;
tempname=currentin->name;
currentin->name=current->name;
current->name=tempname;
}
currentin=currentin->next;
}
current=current->next;
}
cout<<"按学号排序完成!"<<endl;
}
private:
linknode *first, *current;
};
void menu(linerlistlink &linerlistlinkref)
{
cout<<"输入 1 输入新的学生及成绩"<<endl
<<"输入 2 删除指定节点"<<endl
<<"输入 3 删除整个成绩表"<<endl
<<"输入 5 搜索学生成绩"<<endl
<<"输入 6 输出整个成绩表"<<endl
<<"输入 7 查看已输入的学生数"<<endl
<<"输入 8 查看最差成绩"<<endl
<<"输入 9 查看最好成绩"<<endl
<<"输入 10 按成绩从小到大排序"<<endl
<<"输入 11 按成绩从大到小排序"<<endl
<<"输入 12 按学号排序"<<endl
<<"输入 13 退出菜单"<<endl;
int t;
cin>>t;
switch(t)
{
case 1:linerlistlinkref.insert();menu(linerlistlinkref);
case 2:linerlistlinkref.del();menu(linerlistlinkref);
case 3:linerlistlinkref.makeempty();menu(linerlistlinkref);
case 5:linerlistlinkref.searchnum();menu(linerlistlinkref);
case 6:linerlistlinkref.coutlinerlistlink();menu(linerlistlinkref);
case 7:linerlistlinkref.getsize();menu(linerlistlinkref);
case 8:linerlistlinkref.getmin();menu(linerlistlinkref);
case 9:linerlistlinkref.getmax();menu(linerlistlinkref);
case 10:linerlistlinkref.sorta_z();menu(linerlistlinkref);
case 11:linerlistlinkref.sortz_a();menu(linerlistlinkref);
case 12: linerlistlinkref.sortnuma_z();menu(linerlistlinkref);
case 13:exit(1);
}
}
int main()
{
linerlistlink linerlistlink1;
menu(linerlistlink1);
return 0;
}

哦哦,忘了做平均成绩,自己补充一下吧。