1 #include<stdio.h> 2 #include<malloc.h> 3 struct Student 4 { 5 int num; //学号 6 int total; //总分 7 char name[20]; //姓名 8 float score[3]; //3个课目的分数 9 }; 10 11 int main() 12 { 13 int N,i,j; 14 printf("Please input N:"); 15 scanf("%d",&N); 16 struct Student *stu = NULL; 17 stu = (struct Student*)malloc(sizeof(struct Student)*N); //创建一个结构体含有N个数据 18 for(i = 0; i < N; i++) 19 { 20 stu[i].total = 0; 21 printf("Please input the No%d student's number:",i+1); 22 scanf("%d",&stu[i].num); 23 printf("Please input the No%d student's name:",i+1); 24 scanf("%s",stu[i].name); 25 for(j = 0; j < 3; j++) 26 { 27 stu[i].score[j] = 0.0; //初始化float 老版本编译器如果不初始化可能会报错 28 printf("Please input the No%d student' score of %d:",i+1,j+1); 29 scanf("%f",&stu[i].score[j]); 30 stu[i].total = stu[i].total + (int)stu[i].score[j]; //求总分 31 } 32 } 33 for(i = 0; i < N; i++) 34 { 35 if(stu[i].total >= 240) //求总分大于240的 36 { 37 printf("%d %s\n",stu[i].num,stu[i].name); 38 } 39 } 40 for(i = 0; i < N; i++) 41 { 42 for(j = 0; j < 3; j++) 43 { 44 if(stu[i].score[j] < 60) //求科目小于60的 45 { 46 printf("%d %s %.2f\n",stu[i].num,stu[i].name,stu[i].score[j]); 47 } 48 } 49 // printf(" %d \n",stu[i].total); 50 } 51 free(stu); //释放 52 return 0; 53 }