/7.1/
1 #include <stdio.h> 2 3 #define N 2 4 5 // 定义结构体类型struct student,并定义STU为其别名 6 typedef struct student 7 { 8 long no; 9 char name[20]; 10 int score; 11 } STU; 12 13 // 函数声明 14 void input(STU s[], int n); 15 int findMinlist(STU s[], STU t[], int n); 16 void output(STU s[], int n); 17 18 int main() 19 { 20 STU stu[N], minlist[N]; 21 int count; 22 23 printf("录入%d个学生信息\n", N); 24 input(stu, N); 25 26 printf("\n统计最低分人数和学生信息...\n"); 27 count = findMinlist(stu, minlist, N); 28 29 printf("\n一共有%d个最低分,信息如下:\n", count); 30 output(minlist, count); 31 32 return 0; 33 } 34 35 // 输入n个学生信息,存放在结构体数组s中 36 void input(STU s[], int n) 37 { 38 int i; 39 for (i = 0; i < n; i++) 40 scanf("%ld %s %d", &s[i].no, s[i].name, &s[i].score); 41 } 42 43 // 输出结构体s中n个元素信息 44 void output(STU s[], int n) 45 { 46 int i; 47 for (i = 0; i < n; i++) 48 printf("%ld %s %d\n", s[i].no, s[i].name, s[i].score); 49 } 50 51 // 在结构体数组s中,查找最低分学生的记录,将其存入结构体数组t中 52 // 形参n是结构体数组s中元素个数 53 // 函数返回最低分的学生人数 54 int findMinlist(STU s[], STU t[], int n) 55 { 56 int i,j=0,min; 57 min = s[0].score; 58 for(i=0;i<n-1;i++) 59 if(s[i].score>s[i+1].score) min = s[i+1].score; 60 for(i=0;i<n;i++){ 61 if(s[i].score==min){ 62 t[j]=s[i]; 63 j++; 64 } 65 } 66 return j; 67 }
/7.2/
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 // 函数声明 17 void input(STU s[], int n); 18 void output(STU s[], int n); 19 void process(STU s[], int n); 20 21 int main() 22 { 23 STU stu[N]; 24 25 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); 26 27 input(stu, N); 28 29 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 30 process(stu, N); 31 32 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n"); 33 output(stu, N); 34 35 return 0; 36 } 37 38 // 录入考生信息:准考证号,姓名,客观题得分,操作题得分 39 void input(STU s[], int n) 40 { 41 int i; 42 for(i=0;i<n;i++) 43 scanf("%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); 44 } 45 46 //输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 47 void output(STU s[], int n) 48 { 49 int i; 50 printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t等级\n"); 51 for(i=0;i<n;i++) 52 printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t%s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 53 } 54 55 // 对考生信息进行处理:计算总分,排序,确定等级 56 void process(STU s[], int n) 57 { 58 int i,j; 59 STU t; 60 for(i=0;i<n;i++) 61 s[i].sum = s[i].objective + s[i].subjective; 62 for(i=0;i<n-1;i++){ 63 for(j=i+1;j<n;j++){ 64 if(s[i].sum<s[j].sum){ 65 t = s[i]; 66 s[i] = s[j]; 67 s[j] = t; 68 } 69 } 70 } 71 for(i=0;i<n;i++){ 72 if(i<=(int)n*0.1) strcpy(s[i].level,"优秀"); 73 else if(i<=(int)n*0.5) strcpy(s[i].level,"合格"); 74 else strcpy(s[i].level,"不合格"); 75 } 76 }
/7.3/
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 // 函数声明 17 void input(STU s[], int n); 18 void output(STU s[], int n); 19 void process(STU s[], int n); 20 21 int main() 22 { 23 STU stu[N]; 24 25 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); 26 27 input(stu, N); 28 29 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 30 process(stu, N); 31 32 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n"); 33 output(stu, N); 34 35 return 0; 36 } 37 38 // 录入考生信息:准考证号,姓名,客观题得分,操作题得分 39 void input(STU s[], int n) 40 { 41 FILE *fp; 42 fp = fopen("C:\\Users\\Lenovo\\Documents\\Tencent Files\\3235133196\\FileRecv\\examinee.txt","r"); 43 int i; 44 if(fp==NULL){ 45 printf("error"); 46 } 47 for(i=0;i<n;i++){ 48 fscanf(fp,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective); 49 } 50 } 51 52 //输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 53 void output(STU s[], int n) 54 { 55 int i; 56 FILE *fp; 57 fp = fopen("D:\\resule.txt","w"); 58 printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t等级\n"); 59 for(i=0;i<n;i++){ 60 printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t%s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 61 fprintf(fp,"%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t%s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level); 62 } 63 } 64 65 // 对考生信息进行处理:计算总分,排序,确定等级 66 void process(STU s[], int n) 67 { 68 int i,j; 69 STU t; 70 for(i=0;i<n;i++) 71 s[i].sum = s[i].objective + s[i].subjective; 72 for(i=0;i<n-1;i++){ 73 for(j=i+1;j<n;j++){ 74 if(s[i].sum<s[j].sum){ 75 t = s[i]; 76 s[i] = s[j]; 77 s[j] = t; 78 } 79 } 80 } 81 for(i=0;i<n;i++){ 82 if(i<=(int)n*0.1) strcpy(s[i].level,"优秀"); 83 else if(i<=(int)n*0.5) strcpy(s[i].level,"合格"); 84 else strcpy(s[i].level,"不合格"); 85 } 86 }
/7.4/
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include<string> 4 #include<time.h> 5 6 int main() { 7 char stu[100][100] = { '\0' }; 8 int i; 9 FILE* fp1, * fp2; 10 fp1 = fopen("D:\\2345Downloads\\list.txt", "r"); 11 fp2 = fopen("lucky.txt", "w+"); 12 int random; 13 int line = 1; 14 15 srand(time(NULL)); 16 17 for (i = 0; i < 5; i++) 18 { 19 20 random = rand() % 80 + 1; 21 22 while (line < random) 23 { 24 if (fgetc(fp1) == '\n') 25 { 26 line++; 27 } 28 29 } 30 fgets(stu[i],50 , fp1); 31 rewind(fp1); 32 line = 1; 33 34 } 35 36 for (i = 0; i < 5; i++) 37 { 38 printf("%s", stu[i]); 39 fprintf(fp2, "%s", stu[i]); 40 } 41 printf("\n"); 42 fprintf(fp2, "\n"); 43 44 45 return 0; 46 }