C语言处理读入 n 个人的成绩,输出比平均分少的人的个数。 输入格式 输入格式: 第一行: n , n < = 100 n,n<=100 第二行: n n 个由空格隔开的整数。 输出格式 输出格式: 一个整数 m,表示低于平均分的人数。
时间: 2024-09-29 21:13:32 浏览: 50
在C语言中,你可以使用这样的程序结构来解决这个问题。首先,你需要从用户那里读取成绩的数量n,然后依次读取每个人的分数并计算总和。接着,通过将总和除以n得到平均分,最后遍历分数数组,统计小于平均分的个数。以下是大致的步骤:
```c
#include <stdio.h>
int main() {
int n, i;
float sum = 0, average, count = 0;
// 读取人数
scanf("%d", &n);
// 读取n个分数并累加
for (i = 0; i < n; i++) {
int score;
scanf("%d", &score);
sum += score;
}
// 计算平均分
average = (float)sum / n;
// 遍历数组,统计小于平均分的个数
for (i = 0; i < n; i++) {
if (score < average) {
count++;
}
}
// 输出结果
printf("%d\n", count); // 输出低于平均分的人数
return 0;
}
```
相关问题
c语言完成: 从键盘读入一组成绩(0-100分),统计其中的有效成绩并将这些有效成绩进行升序或降序排序,最后按序输出高于平均分的所有有效分数。注:一个有效分数必须为[0,100]区间内的整数。 题目内容: 从键盘读入一组成绩(0-100分)以-1表示结束,统计其中的有效成绩[0,100]区间内的数)的个数和平均分,并将这些有效成绩进行升序或降序 排序,最后按序输出高于平均分的所有有效分数。 输入格式: 第一行,一组数字,以-1结束; 第二行,一个整数,0或1,其中0表示升序排序,1表示降序排序。 输出格式: 第一行,有效分数的平均数,保留两位小数; 第二行,高于平均数的所有有效分数,以空格分割,最后一个数字后面同样有一个空格。 输入样例: 23 45 90 120 200 90 80-1 0 输出样例: 65.60 80 90 90
以下是用 C 语言完成上述任务的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_N 100
int main()
{
int scores[MAX_N]; // 用于存储从键盘输入的成绩
int n = 0; // 用于统计有效成绩的个数
int total = 0; // 用于统计有效成绩的总分
int order; // 用于存储排序方式
int i, j;
// 从键盘读入成绩,统计有效成绩的个数和总分
scanf("%d", &scores[n]);
while (scores[n] != -1) {
if (scores[n] >= 0 && scores[n] <= 100) {
n++;
total += scores[n];
}
scanf("%d", &scores[n]);
}
// 读入排序方式
scanf("%d", &order);
// 冒泡排序
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1 - i; j++) {
if ((order == 0 && scores[j] > scores[j + 1]) || (order == 1 && scores[j] < scores[j + 1])) {
int temp = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp;
}
}
}
// 计算平均分
double avg = (double)total / n;
printf("%.2lf\n", avg);
// 输出高于平均分的有效成绩
for (i = 0; i < n; i++) {
if (scores[i] > avg) {
printf("%d ", scores[i]);
}
}
return 0;
}
```
这段代码首先读入一组数字,然后统计其中的有效成绩的个数和总分。接着读入排序方式,然后对有效成绩进行冒泡排序。最后计算平均分并输出高于平均
c语言编写函数,以参数方式返回n个整数的最大值、最小值、大于平均值的数据的个数。 输入格式: 输入数据的第一行为一个正整数T, 表示测试数据的组数。每组测试数据先输入数据个数n,然后输入n个整数。 输出格式: 对于每组测试,在一行上输出最大值、最小值、大于平均值的数据的个数。数据之间以1个空格分隔。 输入样例: 2 4 1 2 5 2 5 4 3 5 1 2 输出样例: 5 1 1 5 1 2
以下是具体的C语言代码实现:
```c
#include <stdio.h>
void min_max_avg(int n, int a[], int *min, int *max, int *above_avg) {
int sum = 0;
for(int i = 0; i < n; i++) {
if(a[i] < *min) {
*min = a[i];
}
if(a[i] > *max) {
*max = a[i];
}
sum += a[i];
}
double avg = (double)sum / n;
for(int i = 0; i < n; i++) {
if(a[i] > avg) {
(*above_avg)++;
}
}
}
int main() {
int T;
scanf("%d", &T);
while(T--) {
int n;
scanf("%d", &n);
int a[n];
for(int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int min = a[0], max = a[0], above_avg = 0;
min_max_avg(n, a, &min, &max, &above_avg);
printf("%d %d %d\n", max, min, above_avg);
}
return 0;
}
```
主要思路是通过定义一个 `min_max_avg` 函数,利用传入的数组和数组长度,来求出这些数的最大值、最小值和平均值,以及大于平均值的数的个数。利用指针来传递最大值、最小值和大于平均值的数的个数。然后在主函数中,读入测试数据的个数和数据,调用 `min_max_avg` 函数来求出结果并输出。
阅读全文