输入n个学生的姓名和百分制成绩,分段统计学生的成绩。\n\n输入格式:\n输入在第一行中给出正整数n(1≤n≤100)。随后n行,每行给出一位学生的姓名和成绩,中间以空格分隔。\n\n输出格式:\n在一行中顺序输
时间: 2023-04-28 14:03:02 浏览: 272
入分数在区间[0,60)、[60,70)、[70,80)、[80,90)和[90,100]的学生人数和所占百分比。每个区间的人数占总人数的比例必须四舍五入到小数点后1位。如果某一区间没有学生,则不输出该区间的信息。
例如,输入:
10
Bowen 85
Wendy 82
Andy 90
Bob 60
Cindy 70
David 50
Eric 30
Frank 88
Grace 75
Henry 92
则输出:
[0,60): 2 20.0%
[60,70): 1 10.0%
[70,80): 2 20.0%
[80,90): 3 30.0%
[90,100]: 2 20.0%
相关问题
输入n个学生的姓名和百分制成绩,分段统计学生的成绩 C语言
下面是一个简单的 C 语言程序,可以输入 n 个学生的姓名和成绩,并进行成绩分段统计:
```c
#include <stdio.h>
#include <string.h>
#define NUM_GRADES 5
#define NUM_STUDENTS 100
int main()
{
char names[NUM_STUDENTS][20];
int grades[NUM_STUDENTS];
int count[NUM_GRADES] = {0};
int n;
printf("请输入学生人数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
printf("请输入第%d个学生的姓名和成绩:", i+1);
scanf("%s %d", names[i], &grades[i]);
if (grades[i] >= 90) {
count[0]++;
} else if (grades[i] >= 80) {
count[1]++;
} else if (grades[i] >= 70) {
count[2]++;
} else if (grades[i] >= 60) {
count[3]++;
} else {
count[4]++;
}
}
printf("成绩分布情况如下:\n");
printf("90分及以上:%d人\n", count[0]);
printf("80分至89分:%d人\n", count[1]);
printf("70分至79分:%d人\n", count[2]);
printf("60分至69分:%d人\n", count[3]);
printf("60分以下:%d人\n", count[4]);
return 0;
}
```
程序中,我们定义了一个二维字符数组 `names`,用来存储学生的姓名,一个整型数组 `grades`,用来存储学生的成绩,以及一个整型数组 `count`,用来存储每个成绩段的人数。
我们首先通过 `scanf` 函数输入学生的人数,然后通过循环输入每个学生的姓名和成绩,并根据成绩的大小,将学生分入对应的成绩段中,统计人数。
最后,我们输出每个成绩段的人数。
用C语言写输入一个正整数n,再输入n个学生的百分制成绩,统计各等级成绩的学生人数
在C语言中,你可以使用循环结构结合条件判断来实现这个功能。这里提供一个简单的示例,使用`scanf`函数获取用户输入,然后遍历输入的成绩来统计各级别的学生人数。
```c
#include <stdio.h>
#include <string.h> // 引入字符串库,用于处理输入的字符串
#define MAX_NAME_LENGTH 50 // 假设名字的最大长度为50字符
#define MAX_SCORES 100 // 每次最多接受100个成绩
// 结构体表示一个学生
typedef struct {
char name[MAX_NAME_LENGTH];
int score; // 成绩
} Student;
void count_grades(int n, Student* students) {
int excellent = 0, good = 0, average = 0, below_average = 0;
for (int i = 0; i < n; i++) {
printf("请输入第%d位同学的成绩(1-100分):", i+1);
scanf("%d", &students[i].score);
switch (students[i].score) {
case 90...100: // 优秀
excellent++;
break;
case 80...89: // 良好
good++;
break;
case 60...79: // 及格
average++;
break;
default: // 不及格
below_average++;
break;
}
}
printf("\n统计数据:\n");
printf("优秀 (%d) 分以上:\n", excellent);
printf("良好 (%d) 分到(%d) 分:\n", 80, 89);
printf("及格 (%d) 分到(%d) 分:\n", 60, 79);
printf("不及格 (%d) 分以下:\n", below_average);
}
int main() {
int n;
printf("请输入学生总数:");
scanf("%d", &n);
Student* student_list = malloc(n * sizeof(Student)); // 动态分配内存
if (student_list == NULL) {
perror("Memory allocation failed");
return 1;
}
for (int i = 0; i < n; i++) {
// 获取姓名(这里简化,实际应用可能需要输入和验证)
strncpy(student_list[i].name, "Student" + i, MAX_NAME_LENGTH - 1);
}
count_grades(n, student_list);
free(student_list); // 使用完后释放动态内存
return 0;
}
```
在这个示例中,`count_grades`函数根据输入的成绩将学生分为四个等级并计数。注意实际应用中需要从用户那里获取每个学生的姓名。
阅读全文