使用结构体变量存储学生姓名和课程成绩,计算平均分及查找不及格同学姓名及分数
1 struct Student //声明Student类型结构体变量 2 { 3 char name[20]; 4 int score[5]; 5 }; 6 typedef struct Student Stu; 7 8 void main() 9 { 10 11 Stu stu[3]; 定义Student类型变量数组 12 int i,j; 13 for(i=0;i<3;i++) //输入学生姓名和成绩 14 { 15 printf("please input student[%d]'s name and scores:\n",i+1); 16 printf("Name:");scanf("%s",stu[i].name); 17 printf("\nScores:"); 18 for(j=0;j<4;j++) 19 { 20 scanf("%d",&stu[i].score[j]);} 21 stu[i].score[j]=0; 22 } 23 void aver(Stu s[],int n); 24 aver(stu,3); //求平均分 25 void fail(Stu s[],int n); 26 fail(stu,3); //打印不及格成绩同学成绩 27 } 28 void aver(Stu s[],int n) 29 { 30 int i,j; 31 float sum; 32 for(i=0;i<n;i++) 33 { 34 for(j=0,sum=0.0;j<4;j++) 35 { 36 sum=sum+s[i].score[j]; 37 } 38 s[i].score[j]=sum/j; 39 } 40 printf("average scores:\n"); 41 for(i=0;i<n;i++) 42 { 43 printf("\n%s :%.1d",s[i].name,s[i].score[4]); 44 } 45 printf("\n"); 46 } 47 void fail(Stu s[],int n) 48 { 49 int i,j; 50 for(i=0;i<n;i++) 51 { 52 for(j=0;j<4;j++) 53 { 54 if(s[i].score[j]<60) 55 { 56 printf("\n%s failed:",s[i].name); 57 printf("\nScores:"); 58 for(j=0;j<4;j++) 59 printf("%d\t",s[i].score[j]); 60 break; 61 } 62 } 63 } 64 }
结构体类型和int,char,数组等基本类型一样,也是一种C语言数据类型,只不过这是一种自定义数据类型,我们可以根据需求由各种基本数据类型构造。
使用结构体变量时遵循变量使用的一般规则。一般把结构体类型声明放到代码的最前面,这一可以使其使用范围为整个程序文件;也可以放在头文件里。