利用结构体时的注意事项

    xiaoxiao2023-03-24  4

            程序要求:有十个学生,每个学生的数据包括学号、姓名、三门课程的成绩,从键盘输入10个学生的数据,要求输出三门课程总平均成绩以及最高分的学生的数据(包括学号、姓名、三门课程的成绩和平均成绩)

            在这个程序中,很明显需要根据题目利用结构体编程,并且结构体中有数组等变量。设置了10个数组,每一项中包括了一个结构体,结构体中各项都需要通过循环程序输入。

            需要注意的是,在程序中,结构体变量不能够作为一个整体进行输入或者输出,只能对结构体变量中的各个成员分别进行输入和输出;引用结构体变量中成员的方式为

                                                      结构体变量名.成员名

            如果成员名是一个数组、结构体或者其他类型,需要作出相应的变换。

            如果成员本身又属于一个结构体类型,那么就需要我们利用更多的成员访问符,对最底层的变量进行访问,并且一切的操作只能在最低层面,例如在最底层面进行赋值、存取或者运算。

            程序如下:

     

     

     

    /*****************************************************

    copyright (C), 2014-2015, Lighting Studio.Co.,     Ltd.

    File name

    AuthorJerey_Jobs    Version:0.1    Date:

    Description

    Funcion List:

    *****************************************************/

     

    #include <stdio.h>

     

    int main()

    {

       struct student

             {

                       intnum;

                       charname[8];

                       intsco[3];

                       floatave;

             }a[10];

             inti,j,k=0,l;

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

             {    printf("输入第%d个学生姓名后依次输入他的学号和各科成绩...\n",i);

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

                        scanf("%d,%d,%d,%d",&a[i].num,&a[i].sco[0],&a[i].sco[1],&a[i].sco[2]);

             }

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

             {

                       printf("%d,%s,%d,%d,%d",a[i].num,a[i].name,a[i].sco[0],a[i].sco[1],a[i].sco[2]);

                       printf("\n");

             }

             intsum[10]={0};

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

             {

                       for(j=0;j<3;j++)

                       {

                           sum[i]=a[i].sco[j]+sum[i];

                       }

             }

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

             {

                       a[i].ave=sum[i]/3;

             }

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

             {

                       if(sum[i]>k)

                       {

                                k=sum[i];

                                l=i;

                       }

             }

             printf("%d号学生总分最高,他的信息是...\n",(l+1));

       printf("%d,%s,%d,%d,%d,%f",a[l].num,a[l].name,a[l].sco[0],a[l].sco[1],a[l].sco[2],a[l].ave);

             printf("\n");

             return0;

    }

    转载请注明原文地址: https://ju.6miu.com/read-1202663.html
    最新回复(0)