c语言编写代码从键盘读取10个成绩,分别计算90分及以上的优秀人数和60分一下的不及格人数
时间: 2024-09-26 17:04:42 浏览: 47
在C语言中,你可以使用循环结构如`for`或`while`以及条件判断来实现这个功能。这里是一个简单的示例程序:
```c
#include <stdio.h>
int main() {
int scores[10], total_scores = 0, excellent = 0, fail = 0;
// 从键盘读取10个成绩
for (int i = 0; i < 10; i++) {
printf("请输入第 %d 个成绩:", i + 1);
scanf("%d", &scores[i]);
total_scores += scores[i];
}
// 计算优秀和不及格人数
for (int i = 0; i < 10; i++) {
if (scores[i] >= 90) {
excellent++;
} else if (scores[i] < 60) {
fail++;
}
}
printf("优秀的总人数:%d\n", excellent);
printf("不及格的人数:%d\n", fail);
return 0;
}
```
在这个程序里,我们首先定义了一个数组`scores`存储成绩,然后通过两次循环:一次用于读取输入并累计总分,另一次用于检查每个分数是否达到优秀(90及以上)或不及格(60以下),并计数。
相关问题
用c语言编写程序,从键盘上输入若干个学生的成绩,当成绩小于或等于0时结束输入,统计并输出优秀,良好,中等,及格和不及格人数。
下面是基于 C 语言的程序代码,实现了从键盘输入若干个学生的成绩,并统计并输出优秀,良好,中等,及格和不及格人数:
```c
#include <stdio.h>
int main() {
int score, excellent = 0, good = 0, medium = 0, pass = 0, fail = 0;
printf("请输入学生成绩(输入小于等于0的成绩结束输入):\n");
while (1) {
scanf("%d", &score);
if (score <= 0) {
break;
}
if (score >= 90) {
excellent++;
} else if (score >= 80) {
good++;
} else if (score >= 70) {
medium++;
} else if (score >= 60) {
pass++;
} else {
fail++;
}
}
printf("优秀:%d\n", excellent);
printf("良好:%d\n", good);
printf("中等:%d\n", medium);
printf("及格:%d\n", pass);
printf("不及格:%d\n", fail);
return 0;
}
```
首先定义了变量 `score` 存储输入的成绩,以及变量 `excellent`、`good`、`medium`、`pass`、`fail` 分别用来统计优秀、良好、中等、及格和不及格人数,初始值均为 0。
然后使用 `while` 循环来读取输入的成绩,当输入的成绩小于等于 0 时,退出循环。在循环中,根据输入的成绩大小,使用 `if...else if...else` 语句来判断该成绩属于哪个等级,并对相应的人数计数器加一。
最后,使用 `printf` 函数输出计数器中各个等级的人数。
编写程序,能从键盘输入一批学生的成绩(以负数为结束标志),计算平均分,并统计不及格成绩的个数
当你需要编写一个C语言程序来完成这个任务时,你可以遵循以下步骤:
1. 首先,定义一个结构体来存储学生信息,包括姓名和成绩。例如:
```c
typedef struct {
char name[50];
int score;
} Student;
```
2. 定义一个变量来存储总分数和不及格的学生数量,初始化为0。
```c
int total_score = 0, fail_count = 0;
```
3. 使用`while`循环来读取用户的输入直到遇到负数。在循环里,你可以使用`scanf`函数获取输入的分数并更新计数器。
```c
while (1) {
printf("Enter student's name and score (negative number to exit): ");
fgets(student.name, sizeof(student.name), stdin);
if (sscanf(student.name, "%s %d", student.name, &student.score) != 2 || student.score < 0) {
break; // 如果输入了负数或不符合格式,退出循环
}
total_score += student.score;
if (student.score <= 60) { // 这里假设及格线为60分
fail_count++;
}
}
```
4. 计算平均分,除以学生人数(但请注意,因为没有处理所有可能的错误情况,如非整数输入,所以这里直接用总分除以1)。
```c
int num_students = fail_count + 1; // 注意加上最后一个已读取到的学生
double average_score = (total_score == 0) ? 0 : (double)total_score / num_students;
```
5. 打印结果:
```c
printf("Average score: %.2f\n", average_score);
printf("Number of students with a failing grade: %d\n", fail_count);
```
完整的代码示例:
```c
#include <stdio.h>
#include <string.h>
typedef struct {
char name[50];
int score;
} Student;
int main() {
int total_score = 0, fail_count = 0;
Student current_student;
while (1) {
printf("Enter student's name and score (negative number to exit): ");
fgets(current_student.name, sizeof(current_student.name), stdin);
if (sscanf(current_student.name, "%s %d", current_student.name, ¤t_student.score) != 2 || current_student.score < 0) {
break;
}
total_score += current_student.score;
if (current_student.score <= 60) {
fail_count++;
}
}
int num_students = fail_count + 1;
double average_score = (total_score == 0) ? 0 : (double)total_score / num_students;
printf("Average score: %.2f\n", average_score);
printf("Number of students with a failing grade: %d\n", fail_count);
return 0;
}
```
阅读全文