第8章实验1:学生成绩管理系统V1.0
某班有最多不超过30人(具体人数由键盘输入)参加某门课程的考试,用一维数组作函数参数编程实现如下学生成绩管理:
(1)录入每个学生的学号和考试成绩;
(2)计算课程的总分和平均分;
(3)按成绩由高到低排出名次表;
(4)按学号由小到大排出成绩表;
(5)按学号查询学生排名及其考试成绩;
(6)按优秀(90100)、良好(8089)、中等(7079)、及格(6069)、不及格(0~59)5个类别,统计每个类别的人数以及所占的百分比;
(7)输出每个学生的学号、考试成绩。
求赞
#include<stdio.h>
#include<stdlib.h>
#define N 30
main()
{
int n, i, j, temp1, temp2, choice, p, mark;
long ids;
float sum;
printf("Input student number(n<30):\n");
while (scanf("%d", &n))
{
if (n < 30 && n > 0)
break;
else
{
printf("Invalid Input!");
continue;
}
}
long id[N];
float score[N];
Choice:
printf("Management for Students' scores\n");
printf("1.Input record\n");
printf("2.Caculate total and average score of course\n");
printf("3.Sort in descending order by score\n");
printf("4.Sort in ascending order by number\n");
printf("5.Search by number\n");
printf("6.Statistic analysis\n");
printf("7.List record\n");
printf("0.Exit\n");
printf("Please Input your choice:\n");
scanf("%d", &choice);
getchar();
switch (choice)
{
case 1:
goto a;
case 2:
goto b;
case 3:
goto c;
case 4:
goto d;
case 5:
goto e;
case 6:
goto f;
case 7:
goto g;
case 0:
goto end;
default:
printf("Input error!\n");
goto Choice;
}
a:
printf("Input student's ID, name and score:\n");
for (i = 1; i <= n; i++)
{
scanf("%ld %f", &id[i], &score[i]);
getchar();
}
goto Choice;
b:
sum = 0;
for (i = 1; i <= n; i++)
sum = sum + score[i];
printf("sum=%.0f,aver=%.2f\n", sum, sum / n);
goto Choice;
c:
printf("Sort in descending order by score:\n");
for (i = 1; i < n; i++)
for (j = i + 1; j <= n; j++)
if (score[j] > score[i])
{
temp1 = score[i], temp2 = id[i];
score[i] = score[j], id[i] = id[j];
score[j] = temp1, id[j] = temp2;
}
for (i = 1; i <= n; i++)
printf("%ld\t%.0f\n", id[i], score[i]);
goto Choice;
d:
printf("Sort in ascending order by number:\n");
for (i = 1; i < n; i++)
for (j = i + 1; j <= n; j++)
if (id[i] > id[j])
{
temp1 = score[i], temp2 = id[i];
score[i] = score[j], id[i] = id[j];
score[j] = temp1, id[j] = temp2;
}
for (i = 1; i <= n; i++)
printf("%ld\t%.0f\n", id[i], score[i]);
goto Choice;
e:
printf("Input the number you want to search:\n");
scanf("%ld", &ids);
getchar();
for (i = 1; i <= n; i++)
{
if (ids == id[i])
{
printf("%ld\t%.0f\n", id[i], score[i]);
goto Choice;
}
else
continue;
}
printf("Not found!\n");
goto Choice;
f:
for (i = 5; i <= 10; i++)
{
p = 0;
for (j = 1; j <= n; j++)
{
mark = score[j] < 60 ? 5 : (int)score[j] / 10;
if (mark == i)
p++;
}
if (i == 5)
{
printf("<60\t%d\t%.2f%%\n", p, (float)p / n * 100);
continue;
}
else if (i >= 6 && i <= 9)
{
printf("%d-%d\t%d\t%.2f%%\n", i * 10, i * 10 + 9, p, (float)p / n * 100);
continue;
}
else
printf("%d\t%d\t%.2f%%\n", i * 10, p, (float)p / n * 100);
}
goto Choice;
g:
for (i = 1; i <= n; i++)
printf("%ld\t%.0f\n", id[i], score[i]);
goto Choice;
end:
printf("End of program!\n");
return 0;
}
(PS:有cqupt的同学吗?坐等2021年数模竞赛组队,有意私信联系。(◦˙▽˙◦))