给定一所学校学生的 C 语言成绩,请你统计全班的平均成绩和男生、女生的平均成绩。
输入格式:
输入首先在第一行中给出一个正整数 N(≤10000),即全校学生人数。最后 N 行,每行按照格式 性别 成绩
给出一位学生的信息。其中 性别
为 1 表示男生,0 表示女生;成绩
是一个 0 到 100 之间的整数。
输出格式:
在一行中依次输出全班的平均成绩、男生的平均成绩、女生的平均成绩。输出小数点后1位,数字间有一个空格分隔。
注意:如果全是男生或全是女生,则缺少的性别就没有办法计算平均分,相应的位置应该输出一个 X
表示没有。
输入样例 1:
5
1 97
0 91
0 98
1 95
1 90
输出样例 1:
94.2 94.0 94.5
输入样例 2:
5
0 97
0 91
0 98
0 95
0 90
输出样例 2:
94.2 X 94.2
我用C语言写的,编译器为VS2022
代码如下:
#include <stdio.h>
int main()
{
int N;
float boys,girls, all; //分别存放男生总成绩,女生总成绩,全班总成绩
boys = girls = all = 0;
float boys_avg, girls_avg, all_avg; //分别存放男生平均分,女生平均分,全班平均分
boys_avg = girls_avg = all_avg = 0;
int boys_num, girls_num; //分别存放男生人数,女生人数
boys_num = girls_num = 0;
char n = 'X';
scanf_s("%d", &N); //scanf_s我只知道能在vs编译器上运行,其他编译器建议改 成scanf
int arr[10000][2]; //存储全班的数据
for (int i = 0; i < N; i++)
{
scanf_s("%d %d", &arr[i][0], &arr[i][1]);
}
for (int i = 0; i < N; i++)
{
all += arr[i][1]; //全班总成绩
if (arr[i][0] == 0)
{
girls += arr[i][1]; //女生总成绩
girls_num++;
}
else
{
boys += arr[i][1]; //男生总成绩
boys_num++;
}
}
all_avg = all / N;
if (boys_num != 0 && girls_num !=0)
{
boys_avg = boys / boys_num;
girls_avg = girls / girls_num;
printf("%.1f %.1f %.1f", all_avg, boys_avg, girls_avg);//%.1f可控制输出一位小数
}
else
{
if (girls_num != 0) //男生一个人都没有
{
printf("%.1f %c %.1f", all_avg, n, all_avg);
}
else //女生一个人也没有
{
boys_avg = boys / boys_num;
printf("%.1f %.1f %c", all_avg, all_avg, n);
}
}
return 0;
}
运行截图: