为了描述不同属性的集合的结构,又不破坏集合之间的个属性之间的关系,需要构造新的数据类型;
直接上代码,没必要那么多口水话;输入学生的信息,计算总分以及平均分后输出

#include<stdio.h>
#include<string.h>
#define N 100
struct student
{
 int sno;
 char name[20];
 char sex[4];
 int age;
 int score[3];
 int sum;
 float average;
};
void count(struct student *,int  );
void count(struct student *st,int num )
{
 int i; 
 for(i=0;i<num;i++)
 {
  st[i].sum=st[i].score[0]+st[i].score[1]+st[i].score[2];
  st[i].average=st[i].score[0]+st[i].score[1]+st[i].score[2]/3.0;
 }
 //打印
 printf("\n\t学号\t   姓名  \t性别\t语文\t英语\t高数\t总分\t平均分\n");
 for(i=0;i<num;i++)
 {
  printf("\t%d %s        %s\t%d\t%d\t%d\t%d\t%f\n",st[i].sno,st[i].name,st[i].sex,st[i].score[0],st[i].score[1],st[i].score[2],st[i].sum,st[i].average);
  } 
 return;
}
int main()
{
 int i;
 struct student st[N];
 int num1;//需要输入的学生人数
 printf("请输入录入人数:\n");
 scanf("%d",&num1);
 if(N<num1)
 {
  num1=N;
  printf("最大人数为N=100!\n");
  } 
 for(i=0;i<num1;i++)
 {
  printf("姓名:");scanf("%s",st[i].name);
  printf("学号:");scanf("%d",&st[i].sno);getchar();
  printf("性别:");scanf("%s",&st[i].sex);
  printf("语文成绩:");scanf("%3d",&st[i].score[0]);
  printf("英语四级成绩:");scanf("%3d",&st[i].score[1]);
  printf("高数成绩:");scanf("%3d",&st[i].score[2]);
 }
 count(st,num1);
 return 0;
}
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐