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

来源:互联网 发布:漫画制作软件下载 编辑:程序博客网 时间:2024/05/21 09:38

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;

}

原创粉丝点击