ReadMe文件
5名学生,语数外、物理四门成绩。
1、每个人的总分,平均分
2、所有学生的各科成绩、平均分
3、按总分排序冒泡或选择排序
4、输入成绩,结果表格
5、下标法、指针法
结构体数组代表学生,学生(学号,姓名,语文、数学、英语、物理、总分、平均分)
输入并把成绩加入数组,等待排序
输出结果
分散成函数->文件
main.c
#include<stdio.h>
/*main.c
*OS:debian-linux
*Compile:gcc
*Date:2015-06-24
*
*
*/
typedef struct returnValue Array;
struct student
{
char num[20];
char name[20];
int chinese;
int math;
int english;
int physical;
float score;
float average;
}stu[5]=
{
{"1101","张一",0,0,0,0,0,0},
{"1102","李二",0,0,0,0,0,0},
{"1103","刘三",0,0,0,0,0,0},
{"1104","赵四",0,0,0,0,0,0},
{"1105","钱五",0,0,0,0,0,0}
};
int bs[5]={0,1,2,3,4};
void MainMenu()
{
printf("请输入成绩:\n");
}
void InputScore()
{
int i;
for(i=0;i<5;i++)
{
scanf("%d",&stu[i].chinese);
scanf("%d",&stu[i].math);
scanf("%d",&stu[i].english);
scanf("%d",&stu[i].physical);
}
}
void PrintAll()
{
int j;
printf("学号 姓名 语文 数学 英语 物理 总分 平均分\n");
for(j=0;j<5;j++)
{
printf("%s %s %4d %4d %4d %4d %4.1f %6.1f \n",
stu[j].num,
stu[j].name,
stu[j].chinese,
stu[j].math,
stu[j].english,
stu[j].physical,
stu[j].score,
stu[j].average);
printf("--------------------------------------------\n");
}
}
void SumAve()
{
int k;
for(k=0;k<5;k++)
{
stu[k].score = stu[k].chinese+stu[k].math+stu[k].english+stu[k].physical;
stu[k].average = stu[k].score/4;
}
}
void BubbleSort()
{
int temp= 0; //中间变量
int l,m;
//冒泡法排序
for(l=0;l<5;l++)
{
for(m=l+1;m<5;m++)
{
if(stu[bs[l]].score > stu[bs[m]].score)
{
temp = bs[l];
bs[l] = bs[m];
bs[m] = temp;
}
}
}
}
void PrintAllAfterBubbleSort()
{
printf("按照总分排序后:\n");
int n;
printf("学号 姓名 语文 数学 英语 物理 总分 平均分\n");
for(n=0;n<5;n++)
{
printf("%s %s %4d %4d %4d %4d %4.1f %6.1f \n",
stu[bs[n]].num,
stu[bs[n]].name,
stu[bs[n]].chinese,
stu[bs[n]].math,
stu[bs[n]].english,
stu[bs[n]].physical,
stu[bs[n]].score,
stu[bs[n]].average);
printf("--------------------------------------------\n");
}
printf("\n");
}
int main()
{
MainMenu();
InputScore();
SumAve();
PrintAll();
BubbleSort();
PrintAllAfterBubbleSort();
return 0;
}
代码很糙,请各位指教...
转载于:https://blog.51cto.com/p6xos/1666091