利用结构体时的注意事项

        程序要求:有十个学生,每个学生的数据包括学号、姓名、三门课程的成绩,从键盘输入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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值