0
已解决
2696 挂科比率
题目描述 Description
某班级有n个学生,在第一学期每个学生都上了5门课程,现在班主任想统计该班级在本学期中有多少人挂过科,只要有一门课的成绩低于60分都算是挂过科,请问该班级的n个学生中有几个人挂过科,该班级的挂科比率是多少(保留一位小数)。
输入描述 Input Description
第一行:n
接下来n行:每行5个整数,为每个学生的5门课程的成绩
输出描述 Output Description
第一行:该班级挂科的人数
第二行:该班级挂科的比率
样例输入 Sample Input
7
59 54 96 61 77
81 67 76 70 59
97 67 99 88 83
70 61 71 61 80
94 83 100 69 89
75 100 91 75 59
63 90 63 60 97
样例输出 Sample Output
3
0.4
0
已采纳
struct{
整形 a,b,c,d,e;
}s[101];
int main(){
double sum=0,n;
输入>>n;
for(int i=1;i<=n;i++){
输入>>s[i].a>>s[i].b>>s[i].c>>s[i].d>>s[i].e;
}
for(int i=1;i<=n;i++){
if(s[i].a<60||s[i].b<60||s[i].c<60||s[i].d<60||s[i].e<60){
sum++;
}
}
double summ=sum/n;
输出<<sum<<endl;
printf("%.1f\n",summ);
return 0;
}
求采纳,谢谢
0
结构体方法:
struct h
{
int a,b,c,d,e;
};
h ok[110];
结构体定义(如上)。
核心代码:
for(int i=1;i<=n;i++)//只要有分数小于60(即挂科),ans就++,表示挂科的人数
{
if(ok[i].a<60)
{
ans++;
continue;
}
if(ok[i].b<60)
{
ans++;
continue;
}
if(ok[i].c<60)
{
ans++;
continue;
}
if(ok[i].d<60)
{
ans++;
continue;
}
if(ok[i].e<60)
{
ans++;
continue;
}
}
最后除以总人数即可
0
0
double n,sum=0.0;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].a1>>a[i].b1>>a[i].c1>>a[i].d1>>a[i].e1;
if(a[i].a1<60)
a[i].s=1;
if(a[i].b1<60)
a[i].s=1;
if(a[i].c1<60)
a[i].s=1;
if(a[i].d1<60)
a[i].s=1;
if(a[i].e1<60)
a[i].s=1;
}
for(int i=1;i<=n;i++)
{
if(a[i].s)
sum++;
}
cout<<sum<<endl;
printf("%.1f",((sum/n*100)+0.5)/100.0);
0
0
0
struct{
整形 a,b,c,d,e;
}s[101];
int main(){
double sum=0,n;
输入>>n;
for(int i=1;i<=n;i++){
输入>>s[i].a>>s[i].b>>s[i].c>>s[i].d>>s[i].e;
}
for(int i=1;i<=n;i++){
if(s[i].a<60||s[i].b<60||s[i].c<60||s[i].d<60||s[i].e<60){
sum++;
}
}
double summ=sum/n;
输出<<sum<<endl;
printf("%.1f\n",summ);
return 0;
}
祝你AC~~~~~~
