题目:某班有5名同学,建立一个学生的简单信息表,包括学号、姓名、3门课程的成绩,编写程序,计算每名学生的平均成绩及名次。(注:定义一个结构体类型,用结构指针作为函数参数
代码:/*在排序的算法中,效率较低,;提供思路: 1.(*(p+i)).rank=5 2. (*(p+i)).rank-- (类似于 选择排序法)
#include<stdio.h>
struct data
{
long numb;
char name[20];
float score[3];
float average;
int rank;
}p[5];
void inputscore(struct data *p) ;
void ave(struct data *p,float average[20]);
void outputscore(struct data *p);
int main()
{
float average[20];
struct data p[5];
inputscore(p);
ave(p,average);
outputscore(p);
return 0;
}
void inputscore(struct data *p)
{
int i,j;
for(i=0;i<5;i++)
{
scanf("%ld",&(*(p+i)).numb);
scanf("%s",(*(p+i)).name);
for(j=0;j<3;j++)
scanf("%f",&(*(p+i)).score[j]);
}
}
void ave(struct data *p,float average[20])
{
float sum=0;
int i,j;
float temp;
for(i=0;i<5;i++)
{
for(j=0;j<3;j++)
sum+=(*(p+i)).score[j];
(*(p+i)).average=sum/3.0;
average[i]=sum/3;
sum=0;
}
for(i=0;i<5;i++)
{
for(j=i+1;j<5;j++)
if(average[j]>average[i])
{
temp=average[i] ;
average[i]=average[j];
average[j]=temp;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if((*(p+i)).average==average[j])
(*(p+i)).rank=j+1;
}
}
}
void outputscore(struct data *p)
{
int i,j;
printf("Number: Name: score: Average: rank:\n");
for(i=0;i<5;i++){
printf("%-9ld%-10s",(*(p+i)).numb,(*(p+i)).name);
for(j=0;j<2;j++)
printf("%-5.1f",(*(p+i)).score[j]);
printf("%-8.1f",(*(p+i)).score[j]);
printf("%-10.1f%-d\n",(*(p+i)).average,(*(p+i)).rank);
}
}
本文介绍了一个学生信息管理系统的设计与实现,该系统使用结构体和指针来存储和处理学生的基本信息和成绩,通过C语言编程实现了输入学生信息、计算平均成绩、排序和输出等功能。
1万+

被折叠的 条评论
为什么被折叠?



