实验7
3.
既然老师都这么打了那么一定是达到了预期效果的
文件处理的优点就是生成了这么个文件,在处理复杂的数据的时候使他清晰可见的呈现出来(可以偷个懒)
4.
子任务1.自然是同上(不是)
居然不清晰可读,(电脑甚至提醒我不要用记事本 打开)
子任务2.
代码
1 #include<stdio.h> 2 #include<stdlib.h> 3 #define N 10 4 typedef struct student { 5 int num; 6 char name[20]; 7 int score; 8 }STU; 9 int main() 10 { 11 FILE *fp; 12 STU st[N]; 13 int i; 14 fp=fopen("file4.dat","r"); 15 if(!fp) 16 { 17 printf("fail to open file4.dat\n"); 18 exit(0); 19 } 20 fread(st, sizeof(STU), 10, fp); 21 fclose(fp); 22 for(i=0; i<N; i++) 23 printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score); 24 return 0; 25 }
结果

其实比较好奇这个内部是怎么处理的...
5.代码
1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 const int N = 10; 5 6 7 typedef struct student { 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 STU stu[N]; 23 24 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); 25 input(stu, N); 26 27 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 28 process(stu, N); 29 30 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n"); 31 output(stu, N); 32 33 return 0; 34 } 35 36 37 void input(STU s[], int n) { 38 FILE *fin; 39 int i; 40 fin=fopen("examinee.txt","r"); 41 if(!fin){ 42 printf("fail to open the file\n"); 43 exit(0); 44 } 45 for(i=0;i<N;i++){ 46 fscanf(fin,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective);} 47 48 fclose(fin); 49 } 50 51 52 void output(STU s[], int n) { 53 FILE *fout; 54 fout=fopen("result.txt","w"); 55 56 for (int i = 0; i < n; i++) { 57 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 ); 58 fprintf(fout,"%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 ); 59 } 60 } 61 62 63 void process(STU s[], int n) { 64 for (int i = 0; i < n; i++) { 65 s[i].sum = s[i].objective + s[i].subjective; 66 if (s[i].sum < 60) { 67 strcpy(s[i].level, "不合格"); 68 } 69 else if (s[i].sum < 80) { 70 strcpy(s[i].level, "合格"); 71 } 72 else { 73 strcpy(s[i].level, "优秀"); 74 } 75 } 76 for (int i = 0; i < n - 1; i++) { 77 STU temp ; 78 for (int j = 0; j < n-1-i; j++) { 79 if (s[j].sum < s[j + 1].sum) { 80 temp = s[j]; 81 s[j] = s[j + 1]; 82 s[j + 1] = temp; 83 } 84 } 85 } 86 }
重点就是在输入输出的地方放上了文件指针
结果
由于懒得原因,第六题可能会在高数月考完补上

浙公网安备 33010602011771号