task1.c

 1 #include <stdio.h>
 2 
 3 #define N 80
 4 #define M 100
 5 
 6 typedef struct {
 7     char name[N];     
 8     char author[N];   
 9 } Book;
10 
11 void write();
12 void read();
13 
14 int main() {
15     printf("测试1: 把图书信息写入文本文件\n");
16     write();
17 
18     printf("\n测试2: 从文本文件读取图书信息, 打印输出到屏幕\n");
19     read();
20 
21     return 0;
22 }
23 
24 void write() {
25     Book x[] = { {"《雕塑家》", "斯科特.麦克劳德"},
26                   {"《灯塔》", "克里斯多夫.夏布特"},
27                   {"《人的局限性》", "塞缪尔.约翰生"},
28                   {"《永不停步:玛格丽特.阿特伍德传》", "罗斯玛丽.沙利文"},
29                   {"《大地之上》", "罗欣顿·米斯特里"},
30                   {"《上学记》", "何兆武"},
31                   {"《命运》", "蔡崇达"} };
32     int n, i;
33     FILE* fp;
34 
35     n = sizeof(x) / sizeof(x[0]);
36 
37     fp = fopen("data1.txt", "w");
38 
39     if (fp == NULL) {
40         printf("fail to open file to write\n");
41         return;
42     }
43 
44     for (i = 0; i < n; ++i)
45         fprintf(fp, "%-40s %-20s\n", x[i].name, x[i].author);
46 
47     fclose(fp);
48 }
49 
50 void read() {
51     Book x[M];
52     int i, n;
53     int number;
54 
55     FILE* fp;
56 
57     fp = fopen("data1.txt", "r");
58 
59     if (fp == NULL) {
60         printf("fail to open file to read\n");
61         return;
62     }
63 
64     i = 0;
65     while (!feof(fp)) {
66         number = fscanf(fp, "%s%s", x[i].name, x[i].author);
67         if (number != 2)
68             break;
69         i++;
70     }
71     n = i;
72 
73     for (i = 0; i < n; ++i)
74         printf("%d. %-40s%-20s\n", i + 1, x[i].name, x[i].author);
75 
76     fclose(fp);
77 }

 

 

task2.c

 1 #include <stdio.h>
 2 #define N 80
 3 #define M 100
 4 typedef struct {
 5     char name[N];      
 6     char author[N];     
 7 } Book;
 8 
 9 void write();
10 void read();
11 int main() {
12     printf("测试1: 把图书信息以数据块方式写入二进制文件\n");
13     write();
14 
15     printf("\n测试2: 从二进制文件读取图书信息, 打印输出到屏幕\n");
16     read();
17 
18     return 0;
19 }
20 
21 void write() {
22     Book x[] = { {"《雕塑家》", "斯科特.麦克劳德"},
23                   {"《灯塔》", "克里斯多夫.夏布特"},
24                   {"《人的局限性》", "塞缪尔.约翰生"},
25                   {"《永不停步:玛格丽特.阿特伍德传》", "罗斯玛丽.沙利文"},
26                   {"《大地之上》", "罗欣顿·米斯特里"},
27                   {"《上学记》", "何兆武"},
28                   {"《命运》", "蔡崇达"} };
29     int n;
30     FILE* fp;
31 
32     n = sizeof(x) / sizeof(x[0]);
33 
34     fp = fopen("data2.dat", "wb");
35 
36     if (fp == NULL) {
37         printf("fail to open file to write\n");
38         return;
39     }
40 
41     fwrite(x, sizeof(Book), n, fp);
42 
43     fclose(fp);
44 }
45 
46 void read() {
47     Book x[M];
48     int i, n;
49     int number;
50 
51     FILE* fp;
52 
53     fp = fopen("data2.dat", "rb");
54 
55     if (fp == NULL) {
56         printf("fail to open file to read\n");
57         return;
58     }
59 
60     i = 0;
61     while (!feof(fp)) {
62         number = fread(&x[i], sizeof(Book), 1, fp);
63         if (number != 1)
64             break;
65         i++;
66     }
67 
68 
69     n = i;
70     for (i = 0; i < n; ++i)
71         printf("%d. %-40s%-20s\n", i + 1, x[i].name, x[i].author);
72 
73     fclose(fp);
74 }

 

task3.c

 1 #include <stdio.h>
 2 #define N 5
 3 #define M 80
 4 
 5 void write();
 6 void read_str();
 7 void read_char();
 8 
 9 int main() {
10     printf("测试1: 把一组字符信息以字符串方式写入文本文件\n");
11     write();
12 
13     printf("\n测试2: 从文件以字符串方式读取, 输出到屏幕\n");
14     read_str();
15 
16     printf("\n测试3: 从文件以单个字符方式读取, 输出到屏幕\n");
17     read_char();
18 
19     return 0;
20 }
21 
22 void write() {
23     char* ptr[N] = { "Working\'s Blues",
24                      "Everything Will Flow",
25                      "Streets of London",
26                      "Perfect Day",
27                      "Philadelphia" };
28     int i;
29     FILE* fp;
30 
31     fp = fopen("data3.txt", "w");
32     if (!fp) {
33         printf("fail to open file to write\n");
34         return;
35     }
36 
37     for (i = 0; i < N; ++i) {
38         fputs(ptr[i], fp);
39         fputs("\n", fp);
40     }
41 
42     fclose(fp);
43 }
44 
45 void read_str() {
46     char songs[N][M];
47     int i;
48     FILE* fp;
49 
50     fp = fopen("data3.txt", "r");
51     if (!fp) {
52         printf("fail to open file to read\n");
53         return;
54     }
55 
56     for (i = 0; i < N; ++i)
57         fgets(songs[i], 80, fp);
58 
59     for (i = 0; i < N; ++i)
60         printf("%d. %s", i + 1, songs[i]);
61 
62     fclose(fp);
63 }
64 
65 void read_char() {
66     char ch;
67     FILE* fp;
68     fp = fopen("data3.txt", "r");
69     if (!fp) {
70         printf("fail to open file to read\n");
71         return;
72     }
73 
74     while (!feof(fp)) {
75         ch = fgetc(fp);
76         if (ch == EOF)
77             break;
78 
79         putchar(ch);
80     }
81 
82     fclose(fp);
83 }

 

task4.c

 

 1 #include <stdio.h>
 2 int main() {
 3     FILE* fp;
 4     fp = fopen("data4.txt", "r");
 5     if (fp == NULL) {
 6         return -1;
 7     }
 8     char t;
 9     int line_count = 0, char_count = 0;
10     while (feof(fp) == 0) {
11         t = fgetc(fp);
12         if (t == EOF) {
13             line_count++;
14             break;
15         }
16         else if (t!=' '&&t!='\n'&&t!='\t') {
17             char_count++;
18         }
19         else if (t == '\n') {
20             line_count++;
21         }
22 
23     }
24     printf("data4.txt统计结果\n行数:%d\n字数:%d", line_count, char_count);
25 }

 

task5.c

 

  1 #include <stdio.h>
  2 #include <string.h>
  3 
  4 #define N 10
  5 
  6 typedef struct {
  7     long id;            // 准考证号
  8     char name[20];      // 姓名
  9     float objective;    // 客观题得分
 10     float subjective;   // 操作题得分
 11     float sum;          // 总分
 12     char result[10];    // 考试结果
 13 } STU;
 14 
 15 // 函数声明
 16 void read(STU st[], int n);
 17 void write(STU st[], int n);
 18 void output(STU st[], int n);
 19 int process(STU st[], int n, STU st_pass[]);
 20 
 21 int main() {
 22     STU stu[N], stu_pass[N];
 23     int cnt;
 24     double pass_rate;
 25 
 26     printf("从文件读入%d个考生信息...\n", N);
 27     read(stu, N);
 28 
 29     printf("\n对考生成绩进行统计...\n");
 30     cnt = process(stu, N, stu_pass);
 31 
 32     printf("\n通过考试的名单:\n");
 33     output(stu, N);   // 输出所有考生完整信息到屏幕
 34     write(stu, N);    // 输出考试通过的考生信息到文件
 35 
 36     pass_rate = 1.0 * cnt / N;
 37     printf("\n本次等级考试通过率: %.2f%%\n", pass_rate * 100);
 38 
 39     return 0;
 40 }
 41 
 42 // 把所有考生完整信息输出到屏幕上
 43 // 准考证号,姓名,客观题得分,操作题得分,总分,结果
 44 void output(STU st[], int n) {
 45     int i;
 46 
 47     printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t结果\n");
 48     for (i = 0; i < n; i++)
 49         printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].result);
 50 }
 51 
 52 // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
 53 void read(STU st[], int n) {
 54     int i;
 55     FILE* fin;
 56 
 57     fin = fopen("examinee.txt", "r");
 58     if (!fin) {
 59         printf("fail to open file\n");
 60         return;
 61     }
 62 
 63     while (!feof(fin)) {
 64         for (i = 0; i < n; i++)
 65             fscanf(fin, "%ld %s %f %f", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);
 66     }
 67 
 68     fclose(fin);
 69 }
 70 
 71 // 把通过考试的考生完整信息写入文件list_pass.txt
 72 // 准考证号,姓名,客观题得分,操作题得分,总分,结果
 73 void write(STU s[], int n) {
 74     // 待补足
 75     // xxx
 76     FILE* fp;
 77     fp = fopen("list_pass.txt", "w");
 78     if (!fp) {
 79         printf("fail to open file\n");
 80         return;
 81     }
 82     for (int i = 0; i < n; i++) {
 83         if (s[i].sum >= 60) {
 84             fprintf(fp, "%ld %s %f %f %f %s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].result);
 85         }
 86     }
 87 }
 88 
 89 // 对考生信息进行处理:计算每位考生考试总分、结果;统计考试通过的人数
 90     int process(STU st[], int n, STU st_pass[]) {
 91         // 待补足
 92         // xxx
 93         int count = 0;
 94         for (int i = 0; i < n; i++) {
 95             st[i].sum = st[i].objective + st[i].subjective;
 96             if (st[i].sum >= 60) {
 97                 strcpy(st[i].result, "合格");
 98                 st_pass[count] = st[i];
 99                 count++;
100             }
101             else {
102                 strcpy(st[i].result, "不合格");
103             }
104         }
105         return count;
106     }

 

task6.c

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <time.h>
  4 
  5 struct stu
  6 {
  7     long long id;
  8     char name[20];
  9     char class[20];
 10 };
 11 
 12 
 13 int main() {
 14     FILE* fp;
 15     struct stu students[80];
 16 
 17     fp = fopen("list.txt", "r");
 18     if (!fp) {
 19         printf("fail to open file\n");
 20         return -1;
 21     }
 22     for (int i = 0; i < 80; i++) {
 23         fscanf(fp, "%lld%s%s", &students[i].id, students[i].name, students[i].class);
 24     }
 25     fclose(fp);
 26     srand((unsigned)time(NULL));
 27 
 28     int count = 0;
 29     int temp[5] = { 81,81,81,81,81 };
 30     struct stu p[5];
 31 
 32     while (count<5) {
 33         int a;
 34         a = rand() % 80;
 35         int flag = 0;
 36         for (int i = 0; i < 5; i++) {
 37             if (temp[i] == a) {
 38                 flag = 1;
 39                 break;
 40             }
 41         }
 42         if (flag) {
 43             continue;
 44         }
 45         temp[count] = a;
 46         p[count++] = students[a];
 47     }
 48 
 49     struct stu t;
 50     for (int i = 0; i < 5; i++) {
 51         for (int j = 0; j < 4 - i; j++) {
 52             if (p[j].id > p[j + 1].id) {
 53                 t = p[j];
 54                 p[j] = p[j + 1];
 55                 p[j + 1] = t;
 56             }
 57         }
 58     }
 59 
 60     printf("----------------随机抽人名单-----------------\n");
 61     for (int i = 0; i < 5; i++) {
 62         fprintf(stdout, "%lld\t%s\t%s\n", p[i].id, p[i].name, p[i].class);
 63     }
 64     printf("------------------保存文件-------------------\n");
 65     time_t timep;
 66     struct tm* pt;
 67     time(&timep);
 68     pt = gmtime(&timep);
 69     char path[100];
 70     char name[100];
 71     printf("输入文件名:");
 72     scanf("%s", name);
 73     sprintf(path, "%s_%d%d%d.txt",name,1990+ pt->tm_year,1+ pt->tm_mon, pt->tm_mday);
 74 
 75     FILE* fp2;
 76     fp2 = fopen(path, "w");
 77     for (int i = 0; i < 5; i++) {
 78         fprintf(fp2, "%lld\t%s\t%s\n", p[i].id, p[i].name, p[i].class);
 79     }
 80     printf("保存成功!");
 81     fclose(fp2);
 82 }
 83 204942001    抖森    星际联盟2049(1)班    
 84 204942002    卷福    星际联盟2049(1)班    
 85 204942003    毛怪    星际联盟2049(1)班    
 86 204942004    大眼仔    星际联盟2049(1)班    
 87 204942005    辛巴    星际联盟2049(1)班    
 88 204942006    裘花    星际联盟2049(1)班    
 89 204942007    小李子    星际联盟2049(1)班    
 90 204942008    甜茶    星际联盟2049(1)班    
 91 204942009    囧瑟夫    星际联盟2049(1)班    
 92 204942010    霉霉    星际联盟2049(1)班    
 93 204942011    大表姐    星际联盟2049(1)班    
 94 204942012    大白    星际联盟2049(1)班    
 95 204942013    灭霸    星际联盟2049(1)班    
 96 204942014    桃乐丝    星际联盟2049(1)班    
 97 204942015    稻草人    星际联盟2049(1)班    
 98 204942016    Max    星际联盟2049(1)班    
 99 204942017    chappie    星际联盟2049(1)班    
100 204942018    千寻    星际联盟2049(1)班    
101 204942019    Sean    星际联盟2049(1)班    
102 204942020    白龙    星际联盟2049(1)班    
103 204942021    汤婆婆    星际联盟2049(1)班    
104 204942022    无脸男    星际联盟2049(1)班    
105 204942023    希达    星际联盟2049(1)班    
106 204942024    巴鲁    星际联盟2049(1)班    
107 204942025    朵拉    星际联盟2049(1)班    
108 204942026    普麻    星际联盟2049(1)班    
109 204942027    苏菲    星际联盟2049(1)班    
110 204942028    哈尔    星际联盟2049(1)班    
111 204942029    小海    星际联盟2049(1)班    
112 204942030    风间俊    星际联盟2049(1)班    
113 204942031    麦康纳    星际联盟2049(1)班    
114 204942032    德尼罗    星际联盟2049(1)班    
115 204942033    安德鲁    星际联盟2049(1)班    
116 204942034    西蒙斯    星际联盟2049(1)班    
117 204942035    伍德    星际联盟2049(1)班    
118 204942036    朱诺    星际联盟2049(1)班    
119 204942037    海蒂    星际联盟2049(1)班    
120 204942038    凯奇    星际联盟2049(1)班    
121 204942039    阿桑奇    星际联盟2049(1)班    
122 204942040    斯诺登    星际联盟2049(1)班    
123 204942041    斯沃茨    星际联盟2049(1)班    
124 204942042    小丑男    星际联盟2049(1)班    
125 204942043    维文    星际联盟2049(1)班    
126 204942044    瓦力    星际联盟2049(1)班    
127 204942045    伊娃    星际联盟2049(1)班    
128 204942046    七角怪    星际联盟2049(1)班    
129 204942047    废柴    星际联盟2049(1)班    
130 204942048    哆啦A梦    星际联盟2049(1)班    
131 204942049    Sam    星际联盟2049(1)班    
132 204942050    Frank    星际联盟2049(1)班    
133 204942051    帕西诺    星际联盟2049(1)班    
134 204942052    罗宾森    星际联盟2049(1)班    
135 204942053    卡罗尔    星际联盟2049(1)班    
136 204942054    达西    星际联盟2049(1)班    
137 204942055    列维    星际联盟2049(1)班    
138 204942056    瑞秋    星际联盟2049(1)班    
139 204942057    吉尔    星际联盟2049(1)班    
140 204942058    伊内兹    星际联盟2049(1)班    
141 204942059    卡拉    星际联盟2049(1)班    
142 204942060    凯西    星际联盟2049(1)班    
143 204942061    德里安    星际联盟2049(1)班    
144 204942062    玛丽昂    星际联盟2049(1)班    
145 204942063    本杰明    星际联盟2049(1)班    
146 204942064    多姆    星际联盟2049(1)班    
147 204942065    比尔    星际联盟2049(1)班    
148 204942066    丽丝    星际联盟2049(1)班    
149 204942067    蒂安娜    星际联盟2049(1)班    
150 204942068    阿卢    星际联盟2049(1)班    
151 204942069    雷婆    星际联盟2049(1)班    
152 204942070    沙维    星际联盟2049(1)班    
153 204942071    艾佛特    星际联盟2049(1)班    
154 204942072    马特    星际联盟2049(1)班    
155 204942073    达克斯    星际联盟2049(1)班    
156 204942074    基廷    星际联盟2049(1)班    
157 204942075    Shaw    星际联盟2049(1)班    
158 204942076    Thomas    星际联盟2049(1)班    
159 204942077    维特    星际联盟2049(1)班    
160 204942078    Jennie    星际联盟2049(1)班    
161 204942079    Tibby    星际联盟2049(1)班    
162 204942080    Vermont    星际联盟2049(1)班