实验一 数组、结构体和函数综合编程

一、实验目的

1.复习数组,结构体和函数的相关知识;

2.掌握利用数组存储数据和进行编程的方法;

3.进一步掌握函数的编写。

二、实验内容

1.学生成绩统计

从键盘输入一个班(全班最多不超过30人)学生某门课的成绩,当输入成绩为负值时,输入结束,分别实现下列功能:

(1)统计不及格人数并打印不及格学生名单;

(2)统计成绩在全班平均分及平均分之上的学生人数,并打印这些学生的名单;

(3)统计各分数段的学生人数及所占的百分比。

注:将成绩分为六个分数段,60分以下为第0段,60~69为第1段,70~79为第2段,80~89为第3段,90~99为第4段,100分为第5段。

编程要求

1.较好的用户输入输出提示信息

2.使用子函数来实现上述各个功能,并且要使用结构体数组来实现,该结构体中包括学生学号和成绩

3.最好不要使用全局变量



源代码如下:



#include <iostream>
using namespace std;
struct Student
{
long num;
float score;
};
int ReadScore(Student stu[])

int n=0;
do
   {
   cin>>stu[n].num;
   cin>>stu[n].score;
        n++;
   }while(stu[n-1].score>=0);
   n--;
   cout<<"总人数为:    "<<n<<endl;
   return n;
}
int GetFail(Student stu[], int n)
{cout<<"不及格的名单:"<<endl;
int fallnum=0;


for(int a=0;a<n;a++)
{


if(stu[a].score<60)
{
cout<<stu[a].num<<"    "<<stu[a].score<<endl;
fallnum++;
}
}
return fallnum;
}
float GetAver(Student stu[], int n)
{
float sum=0;
for(int a=0;a<=n;a++)
{
sum=sum+stu[a].score;
}
float aver=sum/n;

return aver;
}
int GetAboveAver(Student stu[], int n)
{




int AboveAvernum=0;


float sum=0;
for(int a=0;a<=n;a++)
{
sum=sum+stu[a].score;
}
float aver=sum/n;


for(int b=0;b<n;b++)
{
if(stu[b].score>=aver)
{
cout<<stu[b].num<<"    "<<stu[b].score<<endl;
AboveAvernum++;
}
}
return AboveAvernum;
}
void GetDetail(Student stu[], int n)
{
float n1=0;
float n2=0;
float n3=0;
float n4=0;
float n5=0;
float n6=0;
for(int a=0;a<=n;a++)
{
if(stu[a].score<60)
n1++;
if(60<=stu[a].score&&stu[a].score<=69)
n2++;
if(70<=stu[a].score&&stu[a].score<=79)
n3++;
if(80<=stu[a].score&&stu[a].score<=89)
n4++;
if(90<=stu[a].score&&stu[a].score<=99)
n5++;
if(stu[a].score==100)
n6++;
}
cout<<"60分以下的百分比为:"<<n1/n<<endl;
cout<<"60~69的百分比为:"<<n2/n<<endl;
cout<<"70~79的百分比为:"<<n3/n<<endl;
cout<<"80~89的百分比为:"<<n4/n<<endl;
cout<<"90~99的百分比为:"<<n5/n<<endl;
cout<<"100的百分比为:"<<n6/n<<endl;
}




void main()
{   
Student s[30];
cout<<"请输入学号和成绩,输入为负值的时候输入结束:"<<endl;
int num=ReadScore(s); 


    int unpassnum=GetFail(s,num);
cout<<"不及格的人数为:"<<unpassnum<<endl;
float aver=GetAver(s, num);
cout<<"平均分是:  "<<aver<<endl;
cout<<"成绩在平均分之上的名单为: "<<endl;
GetAboveAver(s,num);
cout<<"成绩在平均分之上的人数:"<<GetAboveAver(s,num)<<endl;


cout<<"各个分数段所占的百分比为:   "<<endl;
GetDetail(s,num);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值