c primer plus 第十四章课后编程5题

#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;
}
发布了85 篇原创文章 · 获赞 1 · 访问量 1889

猜你喜欢

转载自blog.csdn.net/Tekkenwxp/article/details/102676432