实验七

任务3:

运行程序,观察在屏幕上正确输出了按分数由高→低排序的信息。同时,在当前路径下,生成了文本文件file3.dat。
尝试用记事本程序打开文件file3.dat,打不开。最后创建了一个新的txt,并用google chrome打开file3.dat并将其中的内容转移到新txt中,才观察到里面的数据信息是正确的,并且是直观可读的。
 
任务4:
修改文件后,运行程序,在屏幕上正确输出了按分数由高到底排序的学生信息。同时,在当前路径下,生成了file4.dat.里面是乱码。
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #define N 10
 4 
 5 
 6 typedef struct student {
 7     int num;
 8     char name[20];
 9     int score;
10     }STU;
11 
12 int main(int argc, const char * argv[]) {
13     FILE *fin;
14     STU st[N];
15     int i;
16     fin = fopen("/Users/bzm/Desktop/Xcode成品/帅哥点进来/博客园/实验七/实验7相关源码及数据文件/file4.txt", "rb");
17     if(!fin){
18         printf("fail to open file4.txt");
19         exit(0);
20     }
21                 for(i=0;i<N;i++){
22     fread(st,sizeof(STU),N,fin);
23     
24     printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);
25     }
26         fclose(fin);
27     
28     return 0;
29 }

任务5:

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <stdlib.h>
 4 const int N = 10;
 5 
 6 typedef struct student {
 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     STU stu[N];
20     printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分 (<=60)\n", N);
21     input(stu, N);
22     printf("\n对考生信息进行处理: 计算总分,确定等级\n");
23     process(stu, N);
24     printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 \n");
25     output(stu, N);
26     return 0;
27 }
28 void input(STU s[], int n) {
29     FILE *fin;
30     fin = fopen("/Users/bzm/Desktop/Xcode成品/帅哥点进来/博客园/实验七/实验7相关源码及数据文件/examinee.txt", "r");
31     if( !fin ) { // 如果打开失败,则输出错误提示信息,然后退出程序
32         printf("fail to open file1.dat\n");
33         exit(0);
34     }
35     for(int i=0;i<n;i++){
36         fscanf(fin, "%ld %s %f %f", &s[i].id, s[i].name, &s[i].objective,&s[i].subjective);
37         s[i].sum=s[i].objective+s[i].subjective;
38     }
39     fclose(fin);
40 }
41 
42 void output(STU s[], int n) {
43     FILE *fout;
44     
45     
46     printf("准考证号        姓名      客观题得分   操作题得分   总分     等级\n");
47     for(int i=0;i<n;i++){
48         printf("%-14.ld%-15s%-10.2f%-10.2f%-8.2f%s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
49     }
50     
51     fout = fopen("/Users/bzm/Desktop/Xcode成品/帅哥点进来/博客园/实验七/实验7相关源码及数据文件/result.txt", "wb");
52     if( !fout ) {
53     printf("fail to open result.txt\n");
54         exit(0);
55         
56     }
57     for(int i=0; i<N; i++)
58     for(int i=0;i<n;i++)
59     fwrite(s, sizeof(STU), N, fout);
60         fclose(fout);
61     
62 }
63 
64 void process(STU s[], int n) {
65     STU t;
66     for(int i=n-1;i>0;i--){
67         for(int j=i;j>=0;j--){
68             if(s[j].sum<s[i].sum){
69                 t=s[j];
70                 s[j]=s[i];
71                 s[i]=t;
72             }
73         }
74     }
75     for(int i=0;i<n;i++){
76         if(i+1<=n/10)strcpy(s[i].level,"优秀");
77         else if(i+1<=n/2)strcpy(s[i].level,"合格");
78         else strcpy(s[i].level,"不合格");
79     }
80     
81 }

(名字乱打的)

任务6:来不及写了

 

总结:遇到超多问题,我以为实验七花二十分钟就能完成,结果花了几个小时。幸运的是,赶在截止时间前顺利完成了任务。

posted @ 2020-12-31 13:22  是逸仙呀  阅读(93)  评论(2编辑  收藏  举报