一、需求分析
每当一门课程考试结束后,将要统计学生的考试成绩,生成统计表,用于分析学生的学习情况,其统计的内容,包括平均成、成绩分数段、最高分、最低分、及格率、优秀率。其分数段分为:优90~100,良80~89,中 70~79,及格60~69,不及格<60。优秀率=优秀人数/总人数,及格率=及格人数/总人数。
二、任务分析
设置数组去存储数据,用while循环不断输入成绩,使用switch分支语句去实现每个部分的小功能,可以把功能写个一个个函数,使用包含文件,方便对程序后期的维护。
三、任务实施
1.开发环境
操作系统:macOS
CPU :3.1hz
内存:16
2.开发工具
Xcode
3.开发步骤
创建源程序
4.相关知识
数组,循环语句,条件语句,分支语句,格式化输入输出,暂未使用自定义函数
5.源代码
#include <stdio.h>
int main()
{
float arr[] = {0};
float input = 0;
int count = -1;
int i = 0;
while (input >= 0)
{
printf("输入成绩(负成绩就会结束输入)>>>\n");
scanf("%f", &input);
if(input > 150)
{
printf("闹呢\n");
}
else
{
arr[i] = input;
count++;
i++;
}
}
// for (int j = 0; j < count; j++)
// {
// printf("%.1f\n", arr[j]);
// }
// printf("输入成绩的个数:%d\n", count);
//功能实现
int userinput = 0;
do
{
printf("****************************\n");
printf("******** 0.退出 ****\n");
printf("******** 1.成绩查询 ****\n");
printf("******** 2.成绩分段 ****\n");
printf("******** 3.优秀率 ****\n");
printf("******** 4.及格率 ****\n");
printf("******** 5.最高分 ****\n");
printf("******** 6.最低分 ****\n");
printf("****************************\n");
printf("快选了\n");
scanf("%d", &userinput);
switch(userinput)
{
case 0:
printf("那我走,程序结束\n");
break;
case 1:
printf("开始查询输入成绩\n");
for (int j = 0; j < count; j++)
{
printf("成绩%d: %.1f\n", j+1, arr[j]);
}
printf("输入成绩的个数:%d\n", count);
break;
case 2:
for (int i = 0; i < count; i++)
{
if(arr[i] >= 90)
printf("成绩%d: %f 优秀\n", i+1, arr[i]);
else
printf("成绩%d: %f 良好\n", i+1, arr[i]);
}
break;
case 3:
for (int j = 0; j < count; j++)
{
float great = 0.0;
float p1 = 0;
if(arr[j] >= 90)
{
great++;
p1 = great / count;
printf("优秀率:%.2f\n", p1);
}
}
break;
case 4:
for (int k = 0; k < count; k++)
{
float pass = 0;
float p2 = 0;
if (arr[k] >= 60)
{
pass++;
p2 = pass / count;
}
printf("及格率: %.2f\n", p2);
}
break;
case 5:
while (1)
{
float max = arr[0];
for (int x = 0; x < count; x++)
{
if (max < arr[i])
{
max = arr[i];
}
}
printf("最高分: %.1f\n", max);
break;
}
break;
case 6:
while (1)
{
float min = arr[0];
for (int x = 0; x < count; x++)
{
if (min > arr[i])
{
min = arr[i];
}
}
printf("最低分: %.1f\n", min);
break;
}
break;
}
}while(userinput);
return 0;
}
6.运行测试
输入:50 90 199 -1
输出:50 90