通过结构体实现学生信息的操作

1.实现学生信息的结构体定义,其中包含:姓名、学号、年龄、成绩。通过终端录入10名学生的信息,求最高分学生的姓名和分数,最低分学生的姓名和分数,以及平均分。(通过结构体指针

#include <stdio.h>

#include <string.h>

#define NUM 10

typedef struct _Student{

   char name[10];

   int age;

   int number;

   int score;

}Student;

int main(int argc,constchar * argv[])

{

   Student stus[NUM];

    //"请输入学生信息!

   for(int i=0;i<NUM;i++)

    {

        printf("请输入第%d个学生信息,格式:学号姓名年龄成绩\n",i+1);

       scanf("%d %s %d %d",&stus[i].number,stus[i].name,&stus[i].age,&stus[i].score);

    }

   //输出学生的信息

   for(int i=0;i<NUM;i++)

    {

       printf("%d个学生信息:学号%d姓名%s年龄%d 成%d\n",i+1,stus[i].number,stus[i].name,stus[i].age,stus[i].score);

    }

    //最高分

   struct_Student * pstu; //结构体指针

    pstu = stus;

   int max = pstu->score;

   char maxname[10];

   for(int i=1;i<NUM;i++)

    {

        pstu++;

       if(max < pstu->score)

        {

            max = pstu->score;

            strcpy(maxname,pstu->name);

        }

    }

   printf("最高分的姓名:%s成绩:%d\n",maxname,max);

    //最低分

    pstu = stus;

   int min = pstu->score;

   char minname[10]; 

   for(int i=1;i<NUM;i++)

    {

        pstu++;

       if(min > pstu->score)

        {

            min = pstu->score

           strcpy(minname,pstu->name);

        }

    }

   printf("最低分的姓名:%s成绩:%d\n",minname,min);

    //平均分

   float sum=0;

    pstu = stus;

   for(int i=0;i<NUM;i++)

    {

        sum = sum + pstu->score;

        pstu++;

    }

   printf("平均分:%f",sum/NUM);

    

   return0;

}

2.实现学生信息的文件保存和读取。
   录入到结构体数组中,通过指针指向,打印到文件中去;再从文件中读取,存入结构体中,通过指针的形式在终端上显示。

#include <stdio.h>

#define NUM 10

typedef struct _Student{

   char name[10];

   int age;

   int number;

   int score;

}Student;

int main(int argc,constchar * argv[])

{

    Student stus[NUM];

    //输入学生信息

   for(int i=0;i<NUM;i++)

    {

        printf("请输入第%d个学生信息,格式:学号姓名年龄 成绩\n",i+1);

        scanf("%d %s %d %d",&stus[i].number,stus[i].name,&stus[i].age,&stus[i].score);

    }

    //保存到文件

    FILE * fp;

    fp=fopen("//Users//len//Desktop//stu.txt","w");

   for(int i=0;i<NUM;i++)

    {

        fprintf(fp,"%d %s %d %d\n",stus[i].number,stus[i].name,stus[i].age,stus[i].score);

    }

    fclose(fp);

    //读取文件内容

    fp=fopen("//Users//len//Desktop//stu.txt","r");

   if(fp==0)

    {

        printf("文件打开失败!\n");

       return0;

    }

   int i=0;

   while (!feof(fp))

    {

        fscanf(fp,"%d %s %d %d\n",&stus[i].number,stus[i].name,&stus[i].age,&stus[i].score);

        i++;

    }

   //输出读取的内容

   for(int i=0;i<NUM;i++)

    {

        printf("%d个学生信息:学号%d姓名%s年龄%d成绩%d\n",i+1,stus[i].number,stus[i].name,stus[i].age,stus[i].score);

    }

    fclose(fp);


   return0;

}

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值