#include<stdio.h>
#include<Windows.h>
#define N 100
int i, n;
void Readscore(int number[], float mathscore[], float chscore[]);//录入函数
int Addscore(int number[], float mathscore[], float chscore[]);//计算总分和平均分
void Swap(int number[], float mathscore[], float chscore[]);//由低到高排序同学成绩
void Static(int number[], float mathscore[], float chscore[]);//统计优秀同学个数
main()
{
int c;
printf("\t学生成绩管理系统V2.0\n\n");
printf("\t1-录入每个学生的学号和考试成绩\n");
printf("\t2-计算每个学生的总分和平均分\n");
printf("\t3-按成绩由低到高排序\n");
printf("\t4-统计优秀(90~100分)同学的个数\n");
printf("\t0-结束使用\n");
HAN:
{
printf("\t请选择想要使用的功能\n\n");
scanf_s("%d", &c);
}
int * number = (int *)malloc(sizeof(int)*c);
float * mathscore = (float *)malloc(sizeof(float)*c);
float * chscore = (float *)malloc(sizeof(float)*c);
switch (c)
{
case 1:
Readscore(number, mathscore, chscore);
goto HAN;
case 2:
Readscore(number, mathscore, chscore);
Addscore(number, mathscore, chscore);
goto HAN;
case 3:
Swap(number, mathscore, chscore);
goto HAN;
case 4:
Static(number, mathscore, chscore);
goto HAN;
case 0:
printf("感谢使用!!!\n");
default:
printf("输入错误!!!\n");
goto HAN;
}
system("pause");
return 0;
}
//录入每个学生的学号和考试成绩
void Readscore(int number[], float mathscore[], float chscore[])
{
int i = 0;
printf("请问有多少名同学?");
scanf_s("%d", &n);
for (i = 0; i < n; ++i)
{
printf("请输入第%d个同学的学号:", i + 1);
scanf_s("%d", &number[i]);
printf("请输入第%d个同学的数学成绩:", i + 1);
scanf_s("%f", &mathscore[i]);
printf("请输入第%d个同学的语文成绩:", i + 1);
scanf_s("%f", &chscore[i]);
}
return;
}
//求总分和平均分
int Addscore(int number[], float mathscore[], float chscore[])
{
int i;
float add, avrg;
for (i = 0; i < n; ++i)
{
add = mathscore[i] + chscore[i];
avrg = add / n;
printf("学号为%d的学生的\n总分为:%f,平均分为:%f\n", number[i], add, avrg);
}
return 0;
}
//由低到高排序学生成绩
void Swap(int number[], float mathscore[], float chscore[])
{
float temp1, add[N];
int i, j, n, temp2;
printf("请问有多少名同学?");
scanf_s("%d", &n);
for (i = 0; i < n; ++i)
{
printf("请输入第%d个同学的学号:", i + 1);
scanf_s("%d", &number[i]);
printf("请输入第%d个同学的数学成绩:", i + 1);
scanf_s("%f", &mathscore[i]);
printf("请输入第%d个同学的语文成绩:", i + 1);
scanf_s("%f", &chscore[i]);
add[i] = mathscore[i] + chscore[i];
}
for (i = 0; i < n - 1; ++i)
{
for (j = 0; j < n - 1 - i; ++j)
if (add[j] > add[j + 1])
{
temp1 = add[j];
add[j] = add[j + 1];
add[j + 1] = temp1;
temp2 = number[j];
number[j] = number[j + 1];
number[j + 1] = temp2;
}
}
printf("由低到高排序后:\n");
for (i = 0; i < n; ++i)
printf("学号为:%d\n成绩为:%f\n", number[i], add[i]);
return;
}
//统计优秀分数(90~100)同学的个数
void Static(int number[], float mathscore[], float chscore[])
{
char ch;
int i, j, p, q;
printf("请问有多少名同学?");
scanf_s("%d", &n);
printf("请选择查询的科目:");
scanf_s(" %c", &ch, 1);
switch (ch)
{
case 'm':
for (i = 0, p = 0; i < n; ++i)
{
printf("请输入第%d个同学的数学成绩:", i + 1);
scanf_s("%f", &mathscore[i]);
if (mathscore[i] >= 90 && mathscore[i] <= 100)
p++;
}
printf("数学成绩为优秀的同学人数为:%d\n", p);
break;
case 'c':
for (j = 0, q = 0; j < n; ++j)
{
printf("请输入第%d个同学的语文成绩:", j + 1);
scanf_s("%f", &chscore[j]);
if (chscore[j] >= 90 && chscore[j] <= 100)
q++;
}
printf("语文成绩为优秀的同学人数为:%d\n", q);
break;
default:
printf("输入错误!!!\n");
}
return;
}