鱼C论坛

 找回密码
 立即注册
查看: 2398|回复: 0

[技术交流] 结构体应用例子

[复制链接]
发表于 2018-6-8 23:14:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
从键盘输入3个学生的信息(姓名、学号、成绩),存入一个结构体数组中,计算平均分,并按成绩高低排序并输出
#define _CRT_SECURE_NO_WARINGS
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>

typedef struct Stu
{
        char name[20];
        int id;
        double score;

}Student;


int scanfStu(Student **Stu,int n)
{
        int ret=0;
        if (NULL==Stu || 0==n)
        {
                ret=-1;
                return ret;
        }


        {
                Student *temp=NULL;
                int i;
                temp=(Student *)malloc(sizeof(Student)*n);
                memset(temp,0,sizeof(Student)*n);
                if (!temp)
                {
                        ret=-2;
                        return ret;
                }
               
                for(i=0;i<n;i++)
                {
                        printf("请输入第%d个学生的姓名:",i+1);
                        scanf("%s",temp[i].name);
                        printf("请输入第%d个学生的学号:",i+1);
                        scanf("%d",&temp[i].id);
                        printf("请输入第%d个学生的成绩:",i+1);
                        scanf("%lf",&temp[i].score);

                }

                 *Stu=temp;
                 return ret;


        }


}


void aveStu(Student *Stu,int n,double *ave)
{
        if (NULL==Stu || 0==n || NULL==ave)
        {
                return;
        }

        {
                int i=0;
                double sum=0;
                double r=0;
                for (i=0;i<n;i++)
                {
                        sum=sum+Stu[i].score;
                }
                r=sum/n;
                *ave=r;
                return;
        }

}


int sortStu(Student *Stu,int n)
{
        int ret=0;
        if (NULL==Stu || 0==n)
        {
                ret=-1;
                return ret;
        }

        {
                int i,j;
                Student temp;
               
                for (i=0;i<n;i++)
                {
                        for (j=i+1;j<n;j++)
                        {
                                if (Stu[i].score<Stu[j].score)
                                {
                                        temp=Stu[i];
                                        Stu[i]=Stu[j];
                                        Stu[j]=temp;
                                }
                        }
                }

                return ret;
        }
}



void printStu(Student *Stu,int n)
{
        if (NULL==Stu || 0==n)
        {
                return;
        }
       


        {
                int i;
                for (i=0;i<n;i++)
                {
                        printf("第%d个学生姓名:%s,学号:%d,成绩:%lf\n",i+1,Stu[i].name,Stu[i].id,Stu[i].score);
               
                }
                return;


        }



}


void main()

{
        Student *st=NULL;
        int n=0;
        int ret=0;
        double ave=0;
        printf("请输入学生的个数n:");
        scanf("%d",&n);
        ret=scanfStu(&st,n);
        if (ret!=0)
        {
                printf("The Function scanfStu() is Error:%d\n",ret);
                return;
        }
        aveStu(st,n,&ave);
        printf("Student ave score:%lf\n",ave);
        ret=sortStu(st,n);
        if (ret!=0)
        {
                printf("The Function sortStu() is Error:%d\n",ret);
        }
        printStu(st,n);


system("pause");
return;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 07:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表