zoukankan      html  css  js  c++  java
  • C语言程序设计笔记8结构

    C语言程序设计-笔记8-结构

    例9-1  输出平均分最高的学生信息。根据学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩。输入n个学生的成绩信息,计算并输出平均分最高的学生信息。

    #include<stdio.h>

    struct student{

         int num;

         char name[10];

         int computer,english,math;

         double average;

    };

    int main(void)

    {

         int i,n;

         struct student max,stu;

         printf("Input n:");

         scanf("%d",&n);

         printf("Input the student's number,name and course scores\n");

         for(i=1;i<=n;i++)

         {

             printf("No.%d:",i);

             scanf("%d%s%d%d%d",&stu.num,stu.name,&stu.math,&stu.english,

    &stu.computer);

             stu.average=(stu.math+stu.english+stu.computer)/3.0;

             if(i==1)

             {

                  max=stu;

             }

             else if(max.average<stu.average)

             {

                  max=stu;

             }

         }

         printf("num:%d,name:%s,average:%.2f\n",max.num,max.name,max.average);

        

         return 0;

    }

    例9-2  学生成绩排序。输入n(n〈50)个学生的成绩信息,按照学生的个人平均成绩从高到低输出他们的信息。

    #include<stdio.h>

    struct student{

         int num;

         char name[10];

         int computer,english,math;

         double average;

         };

        

    int main(void)   

    {

         int i,index,j,n;

         struct student students[50],temp;

        

         printf("Input n:");

         scanf("%d",&n);

         for(i=0;i<n;i++)

         {

             printf("Input the info of No.%d:\n",i+1);

             printf("number:");

             scanf("%d",&students[i].num);

             printf("name:");

             scanf("%s",students[i].name);

             printf("math score:");

             scanf("%d",&students[i].math);

             printf("english score:");

             scanf("%d",&students[i].english);

             printf("computer score:");

             scanf("%d",&students[i].computer);

             students[i].average=(students[i].math+students[i].english+

                                     students[i].computer)/3.0;

            

         }

        

         for(i=0;i<n-1;i++)

         {

             index=i;

             for(j=i+1;j<n;j++)

             {

                  if(students[j].average>students[index].average)

                  {

                       index=j;

                  }

             }       

                  temp=students[index];

                  students[index]=students[i];

                  students[i]=temp;

         }

            

         printf("num\t name\t average\n");

         for(i=0;i<n;i++)

         {

             printf("%d \t%s \t%.2f\n",students[i].num,students[i].name,

                       students[i].average);

         }

        

         return 0;

    }

    例9-3  修改学生成绩。输入n(n<50)个学生的成绩信息,再输入一个学生的学号、课程以及成绩,在自定义函数中修改该学生指定课程的成绩。

    #include<stdio.h>

    struct student{

         int num;

         char name[10];

         int computer,english,math;

         double average;

    };

    int update_score(struct student *p,int n,int num,int course,int score);

    int main(void)

    {

         int course,i,n,num,pos,score;

         struct student students[50];

        

         printf("Input n:");

         scanf("%d",&n);

         for(i=0;i<n;i++)

         {

             printf("Input the info of No.%d:\n",i+1);

             printf("number:");

             scanf("%d",&students[i].num);

             printf("name:");

             scanf("%s",students[i].name);

             printf("math score:");

             scanf("%d",&students[i].math);

             printf("english score:");

             scanf("%d",&students[i].english);

             printf("computer score:");

             scanf("%d",&students[i].computer);

         }

         printf("Input the number of the students to be updated:");

         scanf("%d",&num);

         printf("Choice the course:1.math 2.english 3.computer:");

         scanf("%d",&course);

         printf("Input the new score:");

         scanf("%d",&score);

        

         pos=update_score(students,n,num,course,score);

        

         if(pos==-1)

         {

             printf("Not found!\n");

         }

         else

         {

             printf("After update:\n");

             printf("num\t math\t english\t computer\n");

             printf("%d\t %d\t %d\t %d\n",students[pos].num,students[pos].math,

                       students[pos].english,students[pos].computer);

         }

        

         return 0;

    }

    int update_score(struct student *p,int n,int num,int course,int score)

    {

         int i,pos;

         for(i=0;i<n;i++,p++)

         {

             if(p->num==num)

             {

                  break;

             }

         }

         if(i<n)

         {

             switch(course)

             {

                  case 1:p->math=score;break;

                  case 2:p->english=score;break;

                  case 3:p->computer;break;

             }

             pos=i;

         }

         else

         {

             pos=-1;

         }

        

         return pos;

    }

    参考资料

    C语言程序设计/何钦铭,颜晖主编.---4版.---北京:高等教育出版社,2020.9

  • 相关阅读:
    《机器学习》第二次作业——第四章学习记录和心得
    机器学习一到三章笔记
    [ML] 第四章学习总结
    [CV] Mnist手写数字分类
    ModelArts (华为GPU/CPU计算云平台)体验
    [DataSturcture] 红黑树求逆序对
    [CV] 边缘提取和角点判断
    [CV] 灰度共生矩阵
    [DataStructure] AC 自动机(Aho–Corasick Automata)
    [GIT] 如何删除git上保存的文件(包含历史文件)
  • 原文地址:https://www.cnblogs.com/halflife/p/15571237.html
Copyright © 2011-2022 走看看