题目描述
编写程序,输入一批学生的成绩,遇0或负数则输入结束,要求统计并输出优秀(大于85)、通过(60~84)和不及格(小于60)的学生人数。
输入格式
一批学生成绩,遇0结束
输出格式
输出各个成绩段的人数
样例输入
88 71 68 70 59 81 91 42 66 77 83 0样例输出
>=85:2
60-84:7
<60:2
代码解析
包含标准输入输出库:
#include <stdio.h>
这一行代码是预处理指令,它告诉编译器在实际编译之前包含标准输入输出库(stdio.h)。这个库提供了进行输入输出操作的功能,比如printf
和scanf
函数。定义主函数:
int main(void)
是C程序的入口点,void
表示这个函数不接受任何参数。定义变量:
int excellence
:用于计数优秀(85分及以上)的成绩数量,初始化为0。int pass
:用于计数及格(60分至84分)的成绩数量,初始化为0。int no_pass
:用于计数不及格(60分以下)的成绩数量,初始化为0。int arr[1000]
:定义了一个整型数组,用于存储用户输入的成绩,数组大小为1000。int i
:用于记录当前读取成绩的索引位置,初始化为0。
输入成绩并统计:
- 使用
while (1)
创建一个无限循环,用于持续读取用户的输入直到遇到非正整数(即成绩小于或等于0)。 scanf("%d", &arr[i]);
这个函数调用用于从标准输入读取一个整数,并将其存储在数组的当前索引位置。- 如果读取的成绩
arr[i]
大于或等于85,增加excellence
的计数。 - 如果成绩在60到84之间,增加
pass
的计数。 - 如果成绩小于60,增加
no_pass
的计数。 - 每次读取后,索引
i
自增,准备读取下一个成绩。
- 使用
输出统计结果:
printf(">=85:%d\n60-84:%d\n<60:%d\n", excellence, pass, no_pass);
这个函数调用用于输出三个等级的成绩计数,分别对应优秀、及格和不及格的数量。函数返回:
return 0;
表示main
函数执行成功并返回0。在C语言中,main
函数的返回值通常用于表示程序的退出状态,其中0表示成功。
源代码
#include <stdio.h>
int main(void)
{
int excellence = 0, pass = 0, no_pass = 0;
int arr[1000];
int i = 0;
while (1)
{
scanf("%d", &arr[i]);
if (arr[i] <= 0)
break;
if (arr[i] >= 85)
excellence++;
else if (arr[i] >= 60 && arr[i] <= 84)
pass++;
else
no_pass++;
i++;
}
printf(">=85:%d\n60-84:%d\n<60:%d\n", excellence, pass, no_pass);
return 0;
}