1 #include <stdio.h> 2 #define N 5 3 // 定义结构体类型struct student,并定义STU为其别名 4 typedef struct student 5 { 6 long no; 7 char name[20]; 8 int score; 9 } STU; 10 // 函数声明 11 void input(STU s[], int n); 12 int findMinlist(STU s[], STU t[], int n); 13 void output(STU s[], int n); 14 int main() 15 { 16 STU stu[N], minlist[N]; 17 int count; 18 printf("录入%d个学生信息\n", N); 19 input(stu, N); 20 printf("\n统计最低分人数和学生信息...\n"); 21 count = findMinlist(stu, minlist, N); 22 printf("\n一共有%d个最低分,信息如下:\n", count); 23 output(minlist, count); 24 return 0; 25 } 26 // 输入n个学生信息,存放在结构体数组s中 27 void input(STU s[], int n) 28 { 29 int i; 30 for (i = 0; i < n; i++) 31 scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score); 32 } 33 // 输出结构体s中n个元素信息 34 void output(STU s[], int n) 35 { 36 int i; 37 for (i = 0; i < n; i++) 38 printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score); 39 } 40 // 在结构体数组s中,查找最低分学生的记录,将其存入结构体数组t中 41 // 形参n是结构体数组s中元素个数 42 // 函数返回最低分的学生人数 43 int findMinlist(STU s[], STU t[], int n) 44 { 45 // 补足函数实现 46 // ××× 47 int i,j,a,b; 48 t[0]=s[0]; 49 for(i=0;i<n;i++){ 50 if(t[0].score>s[i].score){ 51 t[0]=s[i];a=i; 52 } 53 }b=1; 54 for(i=0;i<n;i++){ 55 if(s[i].score==t[0].score&&i!=a){ 56 t[b++]=s[i]; 57 } 58 } 59 return b;
60 }
1 #include <stdio.h> 2 #include <string.h> 3 #define N 10 4 5 // 定义结构体类型struct student,并定义其别名为STU 6 typedef struct student 7 { 8 long int id; 9 char name[20]; 10 float objective; /*客观题得分*/ 11 float subjective; /*操作题得分*/ 12 float sum; 13 char level[10]; 14 } STU; 15 // 函数声明 16 void input(STU s[], int n); 17 void output(STU s[], int n); 18 void process(STU s[], int n); 19 int main() 20 { 21 STU stu[N]; 22 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); 23 input(stu, N); 24 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 25 process(stu, N); 26 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n"); 27 output(stu, N); 28 return 0; 29 } 30 // 录入考生信息:准考证号,姓名,客观题得分,操作题得分 31 void input(STU s[], int n) 32 { 33 int i,j; 34 for(i=0;i<n;i++){ 35 scanf("%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); 36 37 38 } 39 40 // 补足代码 41 // ××× 42 } 43 //输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 44 void output(STU s[], int n) 45 { 46 // 补足代码 47 // ××× 48 int i; 49 for(i=0;i<n;i++){ 50 printf("%ld %s %f %f %f %s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 51 } 52 } 53 // 对考生信息进行处理:计算总分,排序,确定等级 54 void process(STU s[], int n) 55 { 56 // 补足代码 57 // ××× 58 int i,j,a,k,c,e; 59 for(i=0;i<n;i++){ 60 s[i].sum=s[i].objective+s[i].subjective; 61 } 62 STU b; 63 64 for(i=0;i<n;i++){ 65 for(j=i+1;j<n;j++){ 66 if(s[i].sum<s[j].sum){ 67 b=s[i]; 68 s[i]=s[j]; 69 s[j]=b; 70 71 } 72 } 73 74 } 75 for(i=0;i<n;i++){ 76 if(i<n/10) strcpy(s[i].level,"优"); 77 else if(i>=(n/10)&&i<(n/2)) strcpy(s[i].level,"及格"); 78 else if(i>=(n/2)) strcpy(s[i].level,"不及格"); 79 } 80 }
1 #include <stdio.h> 2 #include <string.h> 3 #define N 10 4 // 定义结构体类型struct student,并定义其别名为STU 5 typedef struct student 6 { 7 long int id; 8 char name[20]; 9 float objective;/*客观题得分*/ 10 float subjective;/*操作题得分*/ 11 float sum; 12 char level[10]; 13 } STU; 14 // 函数声明 15 void input(STU s[],int n); 16 void output(STU s[], int n); 17 void process(STU s[], int n); 18 int main() 19 { 20 STU stu[N]; 21 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分 (<=60)\n", N); 22 input(stu, N); 23 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 24 process(stu, N); 25 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 \n"); 26 output(stu, N); 27 28 29 return 0; 30 } 31 // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分 32 void input(STU s[], int n) 33 { 34 // 补足代码// ××× 35 FILE *fp1; 36 int i; 37 fp1=fopen("examinee.txt","r"); 38 for(i=0;i<n;i++){ 39 fscanf(fp1,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); 40 } 41 fclose(fp1); 42 43 44 45 } 46 // 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 47 // 不仅输出到屏幕上,还写到文本文件result.txt中 48 void output(STU s[], int n) 49 { // 补足代码 50 // ××× 51 FILE *fp2; 52 int i; 53 fp2=fopen("result.txt","w"); 54 for(i=0;i<n;i++){ 55 fprintf(fp2,"%ld %s %.2f %.2f %.2f %s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 56 printf("%ld %s %.2f %.2f %.2f %s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 57 } 58 fclose(fp2); 59 60 } 61 // 对考生信息进行处理:计算总分,排序,确定等级 62 void process(STU s[], int n) { 63 // 补足代码 64 // ××× 65 int i,j,a,k,c,e; 66 for(i=0;i<n;i++){ 67 s[i].sum=s[i].objective+s[i].subjective; 68 } 69 STU b; 70 71 for(i=0;i<n;i++){ 72 for(j=i+1;j<n;j++){ 73 if(s[i].sum<s[j].sum){ 74 b=s[i]; 75 s[i]=s[j]; 76 s[j]=b; 77 } 78 } 79 80 } 81 for(i=0;i<n;i++){ 82 if(i<n/10) strcpy(s[i].level,"优"); 83 else if(i>=(n/10)&&i<(n/2)) strcpy(s[i].level,"及格"); 84 else if(i>=(n/2)) strcpy(s[i].level,"不及格"); 85 }}