#include <stdio.h>
#include <string.h>
#define MAX 20
#define CJ 3
struct name{
char fname[MAX];
char sname[MAX];
};
struct student{
struct name k;
float grade[3];
float average;
};
char *s_gets(char *st,int n);
int main(void)
{
char contrast1[MAX];
char contrast2[MAX];
enum spectrun{CSIZE=4};
struct student a[CSIZE]={
{“wang”,“xiaopeng”},
{“wang”,“jinxuan”},
{“liang”,“jianhui”},
{“wang”,“xiaoqiang”}
};
int i=0;
int j=0;
float aa=0;
printf("请输入需要录入分数学生的姓:\n");
while(i<CSIZE && s_gets(contrast1,MAX)!=NULL && a[i].k.fname[0]!='\0')
{
printf("请输入需要录入分数学生的名:\n");
s_gets(contrast2,MAX);
for(j=0;j<CSIZE;j++)
{
if(strcmp(contrast1,a[j].k.fname)==0 && strcmp(contrast2,a[j].k.sname)==0)
{
printf("请输入学生的分数:\n");
scanf("%f %f %f",&a[j].grade[0],&a[j].grade[1],&a[j].grade[2]);
a[j].average=(a[j].grade[0]+a[j].grade[1]+a[j].grade[2])/CJ;
while(getchar()!='\n')
continue;
break;
}
else if(j==CSIZE-1)
{
printf("请重新输入学生的姓:\n");
s_gets(contrast1,MAX);
printf("请输入需要录入分数学生的名:\n");
s_gets(contrast2,MAX);
continue;
}
}
i++;
if(i<CSIZE)
printf("请输入下一个学生的姓:\n");
}
for(j=0;j<CSIZE;j++)
{
printf("姓 名: %s %s\n",a[j].k.fname,a[j].k.sname);
printf("分 数: %.2f %.2f %.2f\n",a[j].grade[0],a[j].grade[1],a[j].grade[2]);
printf("平 均: %.2f\n",a[j].average);
aa+=a[j].average;
}
printf("班级平均分: %.2f\n",aa/CSIZE);
return 0;
}
char *s_gets(char *st, int n)
{
char *ret_val;
char *find;
ret_val=fgets(st,n,stdin);
if(ret_val)
{
find=strchr(st,'\n');
if(find)
*find='\0';
else
while(getchar()!='\n')
continue;
}
return ret_val;
}