1. 实验任务1
/* // 将图书信息写入文本文件data1.txt #include <stdio.h> #define N 7 #define M 80 typedef struct { char name[M]; // 书名 char author[M]; // 作者 } Book; int main() { Book x[N] = { {"《雕塑家》", "斯科特.麦克劳德"}, {"《灯塔》", "克里斯多夫.夏布特"}, {"《五号屠宰场》", "库尔特.冯内古特"}, {"《出卖月亮的人》", "罗伯特.海因莱茵"}, {"《大地之上》", "罗欣顿·米斯特里"}, //结构体类型的初始化支持此操作 {"《上学记》", "何兆武"}, {"《命运》", "蔡崇达"} }; int i; FILE* fp; //定义文件指针 // 以写的方式打开文本文件data1.txt fp = fopen("data1.txt", "w"); //fopen()函数:若顺利打开指定的文件则该函数返回该文件的首地址,否则返回NULL; // 如果打开文件失败,输出提示信息并返回 if (fp == NULL) { printf("fail to open file\n"); return 1; } // 将结构体数组x中的图书信息写到fp指向的文件data1.txt // 同时也输出到屏幕上 for (i = 0; i < N; ++i) { fprintf(fp, "%-20s %-20s\n", x[i].name, x[i].author); printf("%-20s %-20s\n", x[i].name, x[i].author); } fclose(fp); return 0; } */
/* // 从文本文件data1.txt中读取图书信息,并打印输出到屏幕 #include <stdio.h> #define N 10 #define M 80 typedef struct { char name[M]; // 书名 char author[M]; // 作者 } Book; int main() { Book x[N]; //结构体数组 int i, n; FILE* fp; // 以读的方式打开文本文件data1.txt fp = fopen("data1.txt", "r"); // 如果打开文件失败,输出提示信息并返回 if (fp == NULL) { printf("fail to open file\n"); return 1; } // 从文件中读取图书信息,保存到结构体数组x中 i = 0; while (!feof(fp)) //feof()当遇到文件末尾时返回非0否则返回0 { fscanf(fp, "%s%s", x[i].name, x[i].author); //从文件中读取图书信息 ++i; } n = i - 1; // 将图书信息打印输出到屏幕上 for (i = 0; i < n; ++i) printf("%d. %-20s%-20s\n", i + 1, x[i].name, x[i].author); fclose(fp); return 0; } */2. 实验任务2
/* // 将图书信息写入二进制文件data2.dat #include <stdio.h> #define N 7 #define M 80 typedef struct { char name[M]; // 书名 char author[M]; // 作者 } Book; int main() { Book x[N] = { {"《雕塑家》", "斯科特.麦克劳德"}, {"《灯塔》", "克里斯多夫.夏布特"}, {"《五号屠宰场》", "库尔特.冯内古特"}, {"《出卖月亮的人》", "罗伯特.海因莱茵"}, {"《大地之上》", "罗欣顿·米斯特里"}, {"《上学记》", "何兆武"}, {"《命运》", "蔡崇达"} }; int i; FILE* fp; // 以写的方式打开二进制文件data2.dat fp = fopen("data2.dat", "wb"); // 如果打开文件失败,输出提示信息并返回 if (fp == NULL) { printf("fail to open file\n"); return 1; } // 将结构体数组x中的图书信息以数据块方式写入文件data2.dat fwrite(x, sizeof(Book), N, fp); fclose(fp); return 0; } */
/* // 从二进制文件data2.dat读取图书信息,并打印输出到屏幕 #include <stdio.h> #define N 7 #define M 80 typedef struct { char name[M]; // 书名 char author[M]; // 作者 } Book; int main() { Book x[N]; int i; FILE* fp; // 以读的方式打开二进制文件data2.dat fp = fopen("data2.dat", "rb"); // 如果打开文件失败,输出提示信息并返回 if (fp == NULL) { printf("fail to open file\n"); return 1; } // 从文件data2.dat以数据块方式读入图书信息数据到结构体数组x fread(x, sizeof(Book), N, fp); // 在屏幕上输出结构体数组x中存储的图书信息 for (i = 0; i < N; ++i) printf("%d. %-20s%-20s\n", i + 1, x[i].name, x[i].author); fclose(fp); return 0; } */3. 实验任务3
/* // 使用fputs()将字符串写入文本文件 #include <stdio.h> #define N 5 #define M 80 int main() { char songs[N][M] = { "Working\'s Blues", "Everything Will Flow", "Streets of London", "Perfect Day", "Philadelphia" }; int i; FILE* fp; fp = fopen("data3.txt", "w"); if (fp == NULL) { printf("fail to open file\n"); return 1; } for (i = 0; i < N; ++i) { fputs(songs[i], fp); //写入的内容不包括字符串的结束标志,也不会自动包括换行符 fputs("\n", fp); } fclose(fp); return 0; } */
/* // 使用fgets()从文件中读取字符串并在屏幕上显示 #include <stdio.h> #define N 5 #define M 80 int main() { char songs[N][M]; int i; FILE* fp; fp = fopen("data3.txt", "r"); if (fp == NULL) { printf("fail to open file\n"); return 1; } for (i = 0; i < N; ++i) fgets(songs[i], 80, fp); //表示从fp位置开始读入79个字符并自动包含字符串结束标识符"\0"存放到字符数组中; for (i = 0; i < N; ++i) printf("%d. %s", i + 1, songs[i]); fclose(fp); return 0; } */4. 实验任务4
/* //编写程序统计文件中字符数(不包括空白符(空格、回车、tab键))。 #include<stdio.h> int main() { char c; int count=0; FILE* p; p = fopen("data4.txt", "r"); if (p == NULL) { printf("fail to open the file\n"); return -1; } c = fgetc(p); while (c != EOF) { if (c != ' ' && c != '\n' && c != '\t') { count++; c = fgetc(p); } else c = fgetc(p); } printf("data4.txt中共包含字符数(不计空白符):%d", count); fclose(p); return 0; } */5. 实验任务5
/* //某省计算机等级考试的终成绩是由两部分组成的:客观题和操作题组成。学生信息包含准考证 //号、学生姓名、客观题分数、操作题分数、总得分和等级。其中客观题占40% ,操作题占60% 。 //其中,N名考生信息及客观题分数、操作题分数已经存在文本文件examinee.txt中,要求从文件中 //读取考生成绩信息,计算后将结果显示在屏幕上,同时写入文本文件result.txt。 //编写函数process(),实现如下功能: //根据客观题和操作题的分数计算学生的总得分,并对学生的总得分进行排序,然后对总得分前10% //的学生的等级确定为"优秀",前10 % -50 % 之间(不包含10 % 但包含50 % 的学生)确定为"合格",其余 //学生等级确定为"不合格"。 #include <stdio.h> #include <string.h> #include <stdlib.h> #define N 10 typedef struct { long int id; char name[20]; float objective; // 客观题得分 float subjective; // 操作题得分 float sum; char level[10]; } STU; // 函数声明 void input(STU s[], int n); void output(STU s[], int n); void process(STU s[], int n); int main() { STU stu[N]; printf("从文件读入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); input(stu, N); printf("\n对考生信息进行处理: 计算总分,确定等级\n"); process(stu, N); printf("\n打印考生完整信息, 并保存到文件中"); output(stu, N); return 0; } // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分 void input(STU s[], int n) { int i; FILE* fin; fin = fopen("examinee.txt", "r"); if (fin == NULL) { printf("fail to open file\n"); exit(0); } while (!feof(fin)) { for (i = 0; i < n; i++) fscanf(fin, "%ld %s %f %f", &s[i].id, s[i].name, &s[i].objective, &s[i].subjective); } fclose(fin); } // 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 // 不仅输出到屏幕上,还写到文本文件result.txt中 void output(STU s[], int n) { FILE* fout; int i; // 输出到屏幕 printf("\n"); printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t等级\n"); for (i = 0; i < n; i++) printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level); // 保存到文件 fout = fopen("result.txt", "w"); if (!fout) { printf("fail to open or create result.txt\n"); exit(0); } fprintf(fout, "准考证号\t\t姓名\t客观题得分\t操作题得分\t总分\t\t等级\n"); for (i = 0; i < n; i++) fprintf(fout, "%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level); fclose(fout); } // 对考生信息进行处理:计算总分,排序,确定等级 void process(STU s[], int n) { STU t; for (int i = 0; i < n; i++) { s[i].sum = s[i].objective + s[i].subjective; } for (int i = 0; i < n - 1; i++) { for (int j = 0; j < n - 1 - i; j++) { if (s[j].sum < s[j + 1].sum) { t = s[j]; s[j] = s[j + 1]; s[j + 1] = t; } } } for (int i = 1; i <= n; i++) { if (i <= 0.1 * n) strcpy(s[i - 1].level, "优秀"); else if (i > 0.1 * n && i <= 0.5 * n) strcpy(s[i - 1].level, "合格"); else strcpy(s[i - 1].level, "不合格"); } } */
标签:fp,文件,return,int,编程,实验,printf,txt,define From: https://www.cnblogs.com/mli-littlewith/p/17009222.html