//******************************************************************************************** 
//*程序作者:冰糖  
//*完成日期:2019年3月8日
//*章    节:实验二
//*题    号:3 
//*题    目:学生成绩统计:
//*         从键盘输入一个班(全班最多不超过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;
#include<iomanip>
int main()
{
	void Percent(float allGrades[],int m); 
	void step(float allGrades[],float aver,int m);
	int i,m;
	float allGrades[30],aver=0;
	cout<<"请输入一个班学生某门课的成绩(每输一次按一下回车,输入的成绩为负数时将结束输入):"<<endl;
	for(i=0;i<30;i++)
	{
		cout<<i+1<<":";
		cin>>allGrades[i];
		if(allGrades[i]<=0)
			break;
	}                                   //首先输入信息    
	m=i;
	for(i=0;i<m;i++)
	{
		aver=aver+allGrades[i];  
	} 
	aver=aver/m;                         //计算平均分 
	step(allGrades,aver,m);              //调用函数 
	Percent(allGrades,m);
}
void step(float allGrades[],float aver,int m)//计算 不及格还有与平均分相关的值 
{
	int i,j=0,k=0,failNum=0,upNum=0;
	int failNames[30],upNames[30];
	for(i=0;i<m;i++)
	{
		if(allGrades[i]>=aver)            //高于平均分 
		{
			upNames[j++]=i+1;
			upNum++;
		}
		if(allGrades[i]<60)               //不及格 
		{
			failNames[k++]=i+1;
			failNum++;
		}
	}
	cout<<"******************************************************************************************"<<endl;
	cout<<"不及格人数:"<<failNum<<endl;   //输出信息 
	cout<<"不及格名单:";
	for(i=0;i<k;i++)
		cout<<failNames[i]<<"号 ";
	cout<<endl; 
	cout<<"高于平均分的人数:"<<upNum<<endl; 
	cout<<"高于平均分的人的名单:";
	for(i=0;i<j;i++)
		cout<<upNames[i]<<"号 ";
	cout<<endl;
} 
void Percent(float allGrades[],int m)          //计算百分比 
{
	int i;
	float percent[6];
	for(i=0;i<m;i++)
	{
		if(allGrades[i]<60)
			(percent[0])++;
		if((60<=allGrades[i])&&(allGrades[i]<70))
			(percent[1])++;	
		if((70<=allGrades[i])&&(allGrades[i]<80))
			(percent[2])++;	
		if((80<=allGrades[i])&&(allGrades[i]<90))
			(percent[3])++;	
		if((90<=allGrades[i])&&(allGrades[i]<100))
			(percent[4])++;	
		if(allGrades[i]==100)
			(percent[5])++;		
	}
  	for(i=0;i<6;i++)
	{
		percent[i]=(percent[i]/m)*100;
	} 
	cout<<"各个分段的人数:"<<endl;
	for(i=0;i<6;i++) 
	{
		cout<<"第"<<i<<"段:"<<fixed<<setprecision(2)<<percent[i]<<"%"<<endl; 
	}
} 
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐