题目
解决代码及点评
/*
功能:用记录来描述一个学生的成绩情况,内容包括:姓名、学号、数学成绩和PASCAL成绩。
要求对一个小组的10个学生的成绩进行统计处理:
1)计算学生的总平均分,并按平均分高低排出名次,打印出姓名。
2)打印出90分以上和不及格者的名字。
要求用子程序来完成。 时间:19:31 2013/10/24
*/ #include<stdio.h>
#include<stdlib.h>
#include<string.h> struct student //创建结构体
{
char name[2];
int ID;
int mathmatic;
int PASCAL;
}; typedef struct student STU; void getInfo45(STU a[],int n); //获取学生信息声明
void Order45(STU a[],int n); //学生排序
void showAll45(STU a[],int n); //打印全部信息
void BigThan45(STU a[],int n); void main()
{
STU people[10];
getInfo45(people,10); //初始化
showAll45(people,10); //打印初始化信息 Order45(people,10); //将学生按平均分排序
puts("After orders!!!");
for(int i=0;i<10;i++) //打印出学生名字以及平均分数
{
printf("%s: %f\n",people[i].name,(people[i].mathmatic+people[i].PASCAL)/2.0);
} puts("excillent and poor ");
BigThan45(people,10); //将大于90和小于60的人名打印出来
system("pause");
}
void BigThan45(STU a[],int n)
{
for(int i=0;i<10;i++)
{
if((a[i].mathmatic+a[i].PASCAL)/2.0>=90 ||(a[i].mathmatic+a[i].PASCAL)/2.0<60)
{
printf("%s: math: %d,PASCAL: %d \n",a[i].name,a[i].mathmatic,a[i].PASCAL);
}
}
}
void showAll45(STU a[],int n)
{
for(int i=0;i<n;i++)
{
printf("%d: %s\tmathmatic:%d, PASCAL:%d \n",a[i].ID,a[i].name,a[i].mathmatic,a[i].PASCAL);;
}
}
void Order45(STU a[],int n)
{
for(int i=0;i<n-1;i++)
{
for(int j=i+1;j<n;j++)
{
if((a[i].mathmatic+a[i].PASCAL)<(a[j].mathmatic+a[j].PASCAL))
{
STU temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
}
}
void getInfo45(STU a[], int n)
{
for (int i = 0; i < 10; i++)
{
a[i].ID = i+1;
a[i].mathmatic = rand() % 60 + 30;
a[i].PASCAL = rand() % 90 + 60;
}
strcpy_s(a[0].name,"A");
strcpy_s(a[1].name, "B");
strcpy_s(a[2].name, "C");
strcpy_s(a[3].name, "D");
strcpy_s(a[4].name, "E");
strcpy_s(a[5].name, "F");
strcpy_s(a[6].name, "G");
strcpy_s(a[7].name, "H");
strcpy_s(a[8].name, "I");
strcpy_s(a[9].name, "G");
}
代码编译以及运行
由于资源上传太多,资源频道经常被锁定无法上传资源,同学们可以打开VS2013自己创建工程,步骤如下:
1)新建工程
2)选择工程
3)创建完工程如下图:
4)增加文件,右键点击项目
5)在弹出菜单里做以下选择
6)添加文件
7)拷贝代码与运行
程序运行结果
代码下载
http://download.****.net/detail/yincheng01/6681845
解压密码:c.itcast.cn