得分:20
#include
struct student{
char name[20],xibu,ganbu;
double qimo,pingyi;
int lunwen;
int sum;
};
int main()
{
int JJSum=0; //奖金总数
struct student stu[10],s; /*记录每个学生的结构体,结构体s用于后面的冒泡*/
int n,num,i,zongshu,j; /*n,表示测试的数据组数,num表示学生的个数*//*zongshu表示最总的奖金总数*/
printf("输入测试组数:"); //不能给个提示吗,又不复杂。
scanf("%d",&n);
while(n--)
{
printf("输入学生数量:");
scanf("%d",&num);
printf("依次输入姓名、期末平均成绩、班级评议成绩、是否干部、是否西部、论文数量:\n");
for(i=0;i
{
stu[i].sum=0;
scanf("%s%lf%lf",&stu[i].name,&stu[i].qimo,&stu[i].pingyi);//这里面是向stu数组中存值,
//不能是stu->*,stu->*只是向数组第一个元素赋值
//所以后面的都是默认值,会是随机数
getchar();
scanf("%c",&stu[i].ganbu);
getchar();
scanf("%c%d",&stu[i].xibu,&stu[i].lunwen);
if((stu[i].qimo>80)&&(stu[i].lunwen>0))
stu[i].sum=stu[i].sum+8000;
if((stu[i].qimo>85)&&(stu[i].pingyi>80))
stu[i].sum=stu[i].sum+4000;
if(stu[i].qimo>90)
stu[i].sum=stu[i].sum+2000;
if((stu[i].qimo>85)&&(stu[i].xibu=='Y'))
stu[i].sum=stu[i].sum+1000;
if((stu[i].pingyi>80)&&(stu[i].ganbu=='Y'))
stu[i].sum=stu[i].sum+850;
printf("%s %lf %lf %c %c %d %d\n",stu[i].name,stu[i].qimo,stu[i].pingyi,stu[i].ganbu,stu[i].xibu,stu[i].lunwen,stu[i].sum);/*测试数据的正确性*/
}
for(i=0;i
{
for(j=0;j
{
if(stu[j].sum
{
s=stu[j];
stu[j]=stu[j+1];
stu[j+1]=s;
}
}
}
for(i=0;i
{
printf("%6d",stu[i].sum);
JJSum+=stu[i].sum; //把学生奖金依次相加得总奖金数
}
printf("\n");
printf("得奖学金最高的学生:\n");
printf("姓名:%s\n",stu[0].name);
printf("奖金:%d\n",stu[0].sum);
printf("奖学金总数:%d\n",JJSum);
printf("\n");
}
return 0;
}