真题-16
作者:
把头发掀起来看世界
,
2024-11-09 16:23:46
,
所有人可见
,
阅读 2
3 统计学生出勤情况
#include <iostream>
#include <cstring>
using namespace std;
const int N=10010;
struct Stu
{
int id;
int present_num;
int delay_num;
int dis_num;
};
Stu stu[N];
void menu(Stu s,int sum)
{
puts("-----------------------------------------");
cout<<"学生学号:"<<s.id<<endl;
cout<<"正常上课次数:"<<s.present_num<<endl;
cout<<"迟到次数:"<<s.delay_num<<endl;
cout<<"缺勤次数:"<<s.dis_num<<endl;
printf("上课率:%.6lf\n",(double)(s.present_num+s.delay_num)/sum);
printf("旷课率:%.6lf\n",(double)s.dis_num/sum);
puts("-----------------------------------------");
}
void sum_menu(int n,int m)
{
puts("*******************************************");
int sp=0,sd=0,su=0;
for(int i=0;i<n;i++)
{
sp+=stu[i].present_num;
sd+=stu[i].delay_num;
su+=stu[i].dis_num;
}
cout<<"总正常出勤次数:"<<sp<<endl;
cout<<"总迟到次数:"<<sd<<endl;
cout<<"总缺席次数:"<<su<<endl;
printf("平均出勤率:%.6lf\n",(double)(sp+sd)/(n*m));
puts("*******************************************");
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>stu[i].id>>stu[i].present_num>>stu[i].delay_num>>stu[i].dis_num;
for(int i=0;i<n;i++)
{
menu(stu[i],m);
}
sum_menu(n,m);
return 0;
}
/*
5 6
1 2 3 1
2 3 1 2
3 2 2 2
4 6 0 0
5 5 1 0
*/