示例:
一、问题描述
编写一个程序,录入每位同学的信息,包括学号,姓名,c语言成绩,数学成绩以及英语成绩。要求:
- 从键盘上输入N名同学的成绩;
- 求出每名同学的总成绩和平均分;
- 输出每名同学的信息,包括学号,姓名,总分,平均分;
- 按照c语言成绩排序输出
#include <stdio.h>
#include <stdlib.h>
#define N 2//录入人数
struct student
{
char num[13];//学号
char name[10];//姓名
int cpp;//c语言成绩
int math;//数学成绩
int english;//英语成绩
int grade;//总成绩
double average;//各科平均成绩
};
/*
功能:统计每名同学的平均成绩和总成绩
*/
void aver(struct student *p)
{
int i;
for(i=0;i<N;i++)
{
(p+i)->grade = (p+i)->cpp + (p+i)->english + (p+i)->math;//总分
(p+i)->average = (p+i)->grade/3;//平均分
}
}
/*
功能:用冒泡排序对大家c语言成绩进行排序
*/
void bubbleSort(struct student *p)
{
int i,j;
struct student temp;
for(i=0;i<N-1;i++)
for(j=0;j<N-1-i;j++)
if((p+j)->cpp < (p+j+1)->cpp)
{
temp = *(p+j+1);
*(p+j+1) = *(p+j);
*(p+j)=temp;
}
}
int main()
{
struct student stu[N];
int i = 0;
do
{
printf("录入第%d位同学信息中......\n",i+1);
printf("学号:");
scanf("%s",stu[i].num);
printf("姓名:");
scanf("%s",stu[i].name);
printf("c语言:");
scanf("%d",&stu[i].cpp);
printf("数学:");
scanf("%d",&stu[i].math);
printf("英语:");
scanf("%d",&stu[i].english);
printf("\n");
i++;
}while(i<N);
aver(stu);//平均成绩
bubbleSort(stu);//冒泡排序
for(i=0;i<N;i++)
{
printf("*----------------------------*\n");
printf("*c语言成绩第%d名如下:\n",i+1);
printf("*学号:%s 姓名:%s\n",stu[i].num,stu[i].name);
printf("*c成绩%d 总分%d 平均分%.2lf\n",stu[i].cpp,stu[i].grade,stu[i].average);
printf("*----------------------------*\n\n");
}
return 0;
}