《C primer plus》Chapter 14.5 (有问题)

 
 

# include <stdio.h> # include <string.h> # include <stdlib.h> # define CSIZE 4 # define LEN 10 char s_gets(char *st,int n); struct name { char fname[LEN]; char lname[LEN]; }; struct student { struct name boy; float grade[3]; float ave; }; int main(void) { struct student guy[CSIZE]= { {.boy.fname="Jason",.boy.lname="Bourne"}, {.boy.fname="LeBorn",.boy.lname="James"}, {.boy.fname="Kevin",.boy.lname="Durant"}, {.boy.fname="Kyre",.boy.lname="Ivring"} }; int i,j,n; for(i=0; i<CSIZE; i++) { char person[LEN]; puts("Please enter your first name:"); printf("%d\n",i); //共有四次循环,但第二次与第四次只执行到这,不知为何 s_gets(person,LEN); for(j=0; j<CSIZE; j++) { float sum=0; if(strcmp(guy[j].boy.fname,person)==0)//输入的firstname依次与其结构内对比,若相同则键入此学生的成绩并计算平均分 { printf("Please enter your score:\n"); for(n=0; n<3; n++) { scanf("%f",&guy[j].grade[n]);//输入成绩 sum+=guy[j].grade[n]; } guy[j].ave=sum/3.0;//计算平均值 //printf("%.2f %d\n",guy[j].ave,j); } } } for(i=0; i<CSIZE; i++) { printf("%s %s,your scores of three course are :%.1f %.1f %.1f.And your averge is %.1f.\n", guy[i].boy.fname,guy[i].boy.lname,guy[i].grade[0],guy[i].grade[1],guy[i].grade[2],guy[i].ave);//输出 } return 0; } char s_gets(char *st,int n) { char *find; char *ret_val; 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; }

猜你喜欢

转载自blog.csdn.net/Jason6620/article/details/79479107