点击查看代码
#include<stdio.h>
#include<stdlib.h>
#define N 40
void readscore(int score[], int n)//读成绩
{
int i;
for (i = 0; i < n; i++)
{
printf("input score:");
scanf("%d", &score[i]);
}
}
void readxuehao(int xuehao[], int n)//读学号
{
int i;
for (i = 0; i < n; i++)
{
printf("input xuehao:");
scanf("%d", &xuehao[i]);
}
}
void PXdy(int cj[][2], int n, int xuehao[], int score[])//按成绩排序并打印
{
int i, j, temp1, temp2;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j <= n - 1; j++)
{
if (score[j] > score[i])
{
temp1 = score[i];
temp2 = xuehao[i];
score[i] = score[j];
xuehao[i] = xuehao[j];
score[j] = temp1;
xuehao[j] = temp2;
}
}
}
for (i = 0; i < n; i++)
{
cj[i][0] = xuehao[i];
cj[i][1] = score[i];
}
for (i = 0; i < n; i++)
{
printf("%d", cj[i][0]);
printf(" %d\n", cj[i][1]);
}
}
void readcj(int cj[][2], int xuehao[], int score[], int n)//学生成绩表
{
int i, j;
for (i = 0; i < n; i++)
{
cj[i][0] = xuehao[i];
cj[i][1] = score[i];
}
/*for (i = 0; i < n; i++)
{
printf("%d", cj[i][0]);
printf(" %d\n", cj[i][1]);
}*/
}
void readxhcj(int cj[][2], int xuehao[], int score[], int n)//按学号排序并打印
{
int i, j, temp1, temp2;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j <= n - 1; j++)
{
if (xuehao[j] < xuehao[i])
{
temp1 = score[i];
temp2 = xuehao[i];
score[i] = score[j];
xuehao[i] = xuehao[j];
score[j] = temp1;
xuehao[j] = temp2;
}
}
}
for (i = 0; i < n; i++)
{
cj[i][0] = xuehao[i];
cj[i][1] = score[i];
}
for (i = 0; i < n; i++)
{
printf("%d", cj[i][0]);
printf(" %d\n", cj[i][1]);
}
}
void PX(int cj[][2], int n, int xuehao[], int score[])//按成绩排序
{
int i, j, temp1, temp2;
for (i = 0; i < n - 1; i++)
{
for (j = i + 1; j <= n - 1; j++)
{
if (score[j] > score[i])
{
temp1 = score[i];
temp2 = xuehao[i];
score[i] = score[j];
xuehao[i] = xuehao[j];
score[j] = temp1;
xuehao[j] = temp2;
}
}
}
}
void chaxun(int cj[][2], int xuehao[], int score[], int n)//查询学生排名及其考试成绩
{
int x, i, t = 0;
printf("input xiang yao xun zhao xuehao:");
scanf("%d", &x);
PX(cj, n, xuehao, score);
readcj(cj, xuehao, score, n);
for (i = 0; i < n; i++)
{
if (cj[i][0] == x)
{
printf("成绩:%d,排名:%d", cj[i][1], i + 1);
t = 1;
break;
}
}
if (t == 0)
printf("wu gai xue sheng");
}
void tongji(int score[], int n)
{
int yx = 0, lh = 0, zd = 0, jg = 0, bjg = 0;
double yxl = 0, lhl = 0, zdl = 0, jgl = 0, bjgl = 0;
int i;
for (i = 0; i < n; i++)
{
if (score[i] >= 90 && score[i] <= 100)
yx++;
else if (score[i] >= 80 && score[i] <= 89)
lh++;
else if (score[i] >= 70 && score[i] <= 79)
zd++;
else if (score[i] >= 60 && score[i] <= 69)
jg++;
else
bjg++;
}
yxl = (double)yx / n;
lhl = (double)lh / n;
zdl = (double)zd / n;
jgl = (double)jg / n;
bjgl = (double)bjg / n;
printf("优秀率:%lf%%\n", yxl * 100);
printf("良好率:%lf%%\n", lhl * 100);
printf("中等率:%lf%%\n", zdl * 100);
printf("及格率:%lf%%\n", jgl * 100);
printf("不及格率:%lf%%", bjgl * 100);
}
void Listrecord(int cj[][2], int xuehao[], int score[], int n)
{
int i, sum = 0, ave;
readcj(cj, xuehao, score, n);
printf("--------------\n");
for (i = 0; i < n; i++)
{
printf("%d", cj[i][0]);
printf(" %d\n", cj[i][1]);
}
for (i = 0; i < n; i++)
{
sum = sum + score[i];
}
ave = sum / n;
printf("--------------\n");
printf("总分为:%d,平均分为:%d", sum, ave);
}
int main(void)
{
int n, xuehao[N],a;
int i, sum = 0, ave;
int score[N];
int cj[N][2];
printf("菜单如下:");
printf("(1)Append record\n");
printf("(2)Calculate 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("(8)Exit\n");
printf("选择选项:\n");
scanf("%d",&a);
printf("input n(输入学生人数):\n");
scanf("%d", &n);
//printf("分别输入学生成绩:\n");
//readscore(score, n);
//printf("分别输入学生学号:\n");
//printf("--------------------\n");
//readxuehao(xuehao, n);
/*printf("按成绩打印成绩表\n");
PXdy(cj, n, xuehao, score);
printf("--------------------\n");
printf("按成绩打印成绩表\n");
readxhcj(cj, xuehao, score, n);*/
//readcj(cj, xuehao, score, n);
//printf("按学号查询学生排名及其考试成绩\n");
//chaxun(cj, xuehao, score, n);
//printf("统计每个类别的人数以及所占的百分比\n");
//tongji(score,n);
//printf("最终统计信息");
//Listrecord(cj, xuehao, score, n);
switch (a)
{
case 1:
printf("分别输入学生成绩:\n");
readscore(score, n);
printf("分别输入学生学号:\n");
readxuehao(xuehao, n);
break;
case 2:
printf("分别输入学生成绩:\n");
readscore(score, n);
//printf("分别输入学生学号:\n");
//readxuehao(xuehao, n);
for (i = 0; i < n; i++)
{
sum = sum + score[i];
}
ave = sum / n;
printf("--------------------\n");
printf("总分为:%d,平均分为:%d", sum, ave);
break;
case 3:
printf("分别输入学生成绩:\n");
readscore(score, n);
readxuehao(xuehao, n);
printf("--------------------\n");
PXdy(cj, n, xuehao, score);
break;
case 4:
printf("分别输入学生成绩:\n");
readscore(score, n);
printf("分别输入学生学号:\n");
readxuehao(xuehao, n);
printf("--------------------\n");
readxhcj(cj, xuehao, score, n);
break;
case 5:
printf("分别输入学生成绩:\n");
readscore(score, n);
printf("分别输入学生学号:\n");
readxuehao(xuehao, n);
chaxun(cj, xuehao, score, n);
break;
case 6:
printf("分别输入学生成绩:\n");
readscore(score, n);
printf("分别输入学生学号:\n");
readxuehao(xuehao, n);
tongji(score,n);
break;
case 7:
printf("分别输入学生成绩:\n");
readscore(score, n);
printf("分别输入学生学号:\n");
readxuehao(xuehao, n);
Listrecord(cj, xuehao, score, n);
break;
case 8:
printf("结束系统!\n");
break;
}
return 0;
}