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)班

