C Primer Plus(第五版) 第十四章 课后习题5


#include <string.h>
#include <stdio.h>
#define MAX 20
#define CSIZE 4
struct name
{
 char First[MAX];
 char Last[MAX];
};
struct student
{
 float grade[3];
 float average;
 struct name names;
};
void eatline()
{
 while(getchar()!='\n')
  continue;
 }
 
void init(struct student *a,int num);
void calcualteaverage(struct student *a,int num);
void show(struct student *a,int num);
void show_average_grade(struct student *a,int num);
int main(int argc, char **argv)
{
 printf("hello world\n");
 
 struct student a[CSIZE];
 strcpy(a[0].names.First,"Adlin");
 strcpy(a[0].names.Last,"Brsdf");
 a[0].grade[0]=77.78;
 a[0].grade[1]=78.54;
 a[0].grade[2]=99.46;
 
 a[1].grade[0]=85.64;
 a[1].grade[1]=90.84;
 a[1].grade[2]=80.65;
 strcpy(a[1].names.First,"Ceate");
 strcpy(a[1].names.Last,"Opeare");
 
 a[2].grade[0]=68.64;
 a[2].grade[1]=96.84;
 a[2].grade[2]=78.65;
 strcpy(a[2].names.First,"Xita");
 strcpy(a[2].names.Last,"Singame");
 
 init(a,4);
 calcualteaverage(a,4);
 show(a,4);
 show_average_grade(a,4);
 return 0;
}
void show_average_grade(struct student *a,int num)
{
 int count=0;
 float average1,average2,average3;
 average1=0.0;
 average2=0.0;
 average3=0.0;
 while(count<num)
 {
  average1+=a->grade[0];
  average2+=a->grade[1];
  average3+=a->grade[2];
  
  count++;
  a++;
 }
 printf(" average1:%.2f\n average2:%.2f\n average3:%.2f\n",average1/num,average2/num,average3/num);
}
void show(struct student *a,int num)
{
 int count=0;
 while(count<num)
 {
  puts(a->names.First);
  puts(a->names.Last);
  printf("1:%.2f 2:%.2f 3:%.2f\n",a->grade[0],a->grade[1],a->grade[2]);
  printf("student average: %.2f\n",a->average);
  
  a++;
  count++;
 }
}
void calcualteaverage(struct student *a,int num)
{
 int count=0;
 int i;
 float sum;
 while(count<num)
 {
  sum=0.0;
  for(i=0;i<3;i++)
   sum+=a->grade[i];
  a->average=sum/3.0;
  
  count++;
  a++;
 }
}
void init(struct student *a,int num)
{
 int count=3;
 a=a+3;
 while(count<num)
 {
  printf("Please input the First name of student\n");
  gets(a->names.First);
  
  printf("Please input the Last name of student\n");
  gets(a->names.Last);
  
  puts("Please input the three grade!");
  scanf("%f %f %f",&(a->grade[0]),&(a->grade[1]),&(a->grade[2]));
  eatline();
  
  
  count++;
  a++;
  if(count<num)
   puts("add another one");
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值