#include <stdio.h>
#include <stdlib.h>
struct Student
{
int score;
char *name;
};//分号
//初始化
struct Student* initStu(int len)
{
int i;
//struct Student stus[5];
//struct Student *p = stus;
struct Student *p = (struct Student *)malloc(len*sizeof(struct Student));
for(i=0;i<len;i++)
{
printf("请输入第%d个学生的名字:\n",i+1);
p->name = (char *)malloc(128);
scanf("%s",p->name);
printf("请输入第%d个学生的成绩:\n",i+1);
scanf("%d",&p->score);
p++;
}
return p-len;
}
//输出
struct Student* printMessige(struct Student *p,int len)
{
int i;
for(i=0;i<len;i++)
{
printf("第%d个学生:名字:%s,成绩:%d.\n",i+1,p->name,p->score);
p++;
}
}
//计算最高成绩
struct Student* maxScore(struct Student *p,int len)
{
int i;
struct Student *max;
max = p;
for(i=0;i<len;i++)
{
if(max->score < p->score)
{
max = p;
}
p++;
}
return max;
}
//计算最低成绩
struct Student* minScore(struct Student *p,int len)
{
int i;
struct Student *min;
min = p;
for(i=0;i<len;i++)
{
if(min->score > p->score)
{
min = p;
}
p++;
}
return min;
}
//计算平均成绩
float average(struct Student *p,int len)
{
float avg;
int i;
float sum = 0;
for(i=0;i<len;i++)
{
sum = sum + p->score;
p++;
}
avg = sum/len;
return avg;
}
//找人
int findSomeon(struct Student *p, int len, char *name)
{
int i;
for(i=0;i<len;i++)
{
if(strcmp(name, p->name) == 0)
{
return 1;
}
p++;
}
return -1;
}
int main()
{
float avg;
int len = 0;
printf("请输入要存储的学生数:\n");
scanf("%d",&len);
struct Student *max = NULL;
struct Student *min = NULL;
struct Student *pstu = initStu(len);
printMessige(pstu,len);
max = maxScore(pstu,len);
printf("最高分的学生姓名为:%s.成绩为:%d\n",max->name,max->score);
min = minScore(pstu,len);
printf("最低分的学生姓名为:%s.成绩为:%d\n",min->name,min->score);
avg = average(pstu,len);
printf("平均分为:%.2f\n",avg);
//printf("请输入要查询的人:\n");
//scanf("%s",Pname);
if(findSomeon(pstu, len, "Zhangsan") == -1)
{
printf("不存在此人!\n");
}else{
printf("存在此人!\n");
}
system("pause");
return 0;
}
C语言练习—使用结构体指针实现成绩计算操作
最新推荐文章于 2023-06-14 02:09:01 发布