实验七

news/2024/10/1 23:28:37

TASK1

点击查看代码
// 将图书信息写入文本文件data1.txt
// 再从文件中读取图书信息,打印输出到屏幕上,并显示行号#include <stdio.h>#define N 80
#define M 100typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();return 0;
}// 函数func1定义
// 功能:把一组图书信息格式化写入文本文件
void func1() {Book x[] = { {"《雕塑家》", "斯科特.麦克劳德"},{"《灯塔》", "克里斯多夫.夏布特"},{"《五号屠宰场》", "库尔特.冯内古特"}, {"《出卖月亮的人》", "罗伯特.海因莱茵"},{"《大地之上》", "罗欣顿·米斯特里"}, {"《上学记》", "何兆武"}, {"《命运》", "蔡崇达"} };int n, i;FILE *fp;// 计算数组x中元素个数n = sizeof(x) / sizeof(Book);       // 以写的方式打开文本文件data1.txt fp = fopen("data1.txt", "w");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 将结构体数组x中的图书信息写到fp指向的文件data1.txtfor(i = 0; i < n; ++i)fprintf(fp, "%-20s %-20s\n", x[i].name, x[i].author);fclose(fp);
}// 函数func2定义
// 功能:从文本文件中格式化读取一组图书信息到数组,输出到屏幕,并显示行号
void func2() {Book x[M]; int i, n;FILE *fp;// 以读的方式打开文本文件data1.txt fp = fopen("data1.txt", "r");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 从文件中读取图书信息,保存到结构体数组x中i = 0;while(!feof(fp)) {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);
}

结果不同

TASK2.2

点击查看代码
// 将图书信息以数据块方式写入二进制文件data2.dat
// 再从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号#include <stdio.h>
#define N 80
#define M 7typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();return 0;
}// 函数func1定义
// 功能:将图书信息以数据块方式写入二进制文件data2.dat
void func1() {Book x[M] = { {"《雕塑家》", "斯科特.麦克劳德"},{"《灯塔》", "克里斯多夫.夏布特"},{"《五号屠宰场》", "库尔特.冯内古特"}, {"《出卖月亮的人》", "罗伯特.海因莱茵"},{"《大地之上》", "罗欣顿·米斯特里"}, {"《上学记》", "何兆武"}, {"《命运》", "蔡崇达"} };int n, i;FILE *fp;// 以写的方式打开二进制文件data2.dat fp = fopen("data2.dat", "wb");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 将结构体数组x中的图书信息以数据块方式写入文件data2.datfwrite(x, sizeof(Book), M, fp);fclose(fp);
}// 函数func2定义
// 功能:从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号
void func2() {Book x[M];int i;FILE *fp;// 以读的方式打开二进制文件data2.dat fp = fopen("data2.dat", "rb");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 从文件data2.dat以数据块方式读入图书信息数据到结构体数组xfread(x, sizeof(Book), M, fp);// 在屏幕上输出结构体数组x中存储的图书信息for(i = 0; i < M; ++i)printf("%d. %-20s%-20s\n", i+1, x[i].name, x[i].author);fclose(fp);
}

TASK2.2

点击查看代码
// 将图书信息以数据块方式写入二进制文件data2.dat
// 再从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号#include <stdio.h>
#define N 80
#define M 7typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();return 0;
}// 函数func1定义
// 功能:将图书信息以数据块方式写入二进制文件data2.dat
void func1() {Book x[M] = { {"《雕塑家》", "斯科特.麦克劳德"},{"《灯塔》", "克里斯多夫.夏布特"},{"《五号屠宰场》", "库尔特.冯内古特"}, {"《出卖月亮的人》", "罗伯特.海因莱茵"},{"《大地之上》", "罗欣顿·米斯特里"}, {"《上学记》", "何兆武"}, {"《命运》", "蔡崇达"} };int n, i;FILE *fp;// 以写的方式打开二进制文件data2.dat fp = fopen("data2.dat", "wb");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 将结构体数组x中的图书信息以数据块方式写入文件data2.datfwrite(x, sizeof(Book), M, fp);fclose(fp);
}// 函数func2定义
// 功能:从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号
void func2() {Book x[N];int i, cnt;FILE *fp;// 以读的方式打开二进制文件data2.dat fp = fopen("data2.dat", "rb");// 如果打开文件失败,输出提示信息并返回 if(fp == NULL) {printf("fail to open file\n");return;}// 从文件data2.dat以数据块方式读入图书信息数据到结构体数组xi = 0;while(!feof(fp)) {fread(&x[i], sizeof(Book), 1, fp);i++;}cnt = i - 1;// 在屏幕上输出结构体数组x中存储的图书信息for(i = 0; i < cnt; ++i)printf("%d. %-20s%-20s\n", i+1, x[i].name, x[i].author);fclose(fp);
}

TASK3

点击查看代码
#include <stdio.h>
#define N 5
#define M 80// 函数声明
void func1();
void func2();
void func3();int main() {func1();func2();func3();return 0;
}// 函数定义
// 功能:使用fputs()将一组字符串写入文本文件
void func1() {// 定义字符指针数组,每个元素存放字符串的起始地址char *ptr[N] = { "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;}for(i = 0; i < N; ++i) {fputs(ptr[i], fp);  // 把ptr[i]指向的字符串写入fp指向的文件中fputs("\n", fp);}fclose(fp);
}// 函数func2定义
// 功能:使用fgets()从文件中读取字符串并在屏幕上显示
void func2() {char songs[N][M];int i;FILE *fp;fp = fopen("data3.txt", "r");if(fp == NULL) {printf("fail to open file\n");return;}for(i = 0; i < N; ++i)fgets(songs[i], 80, fp);for(i = 0; i < N; ++i)printf("%d. %s", i+1, songs[i]);fclose(fp);
}// 函数func3定义
// 功能:使用fetc从文件中逐个字符读取数据,打印输出到屏幕上
void func3() {char ch;FILE *fp;fp = fopen("data3.txt", "r");if(fp == NULL) {printf("fail to open file\n");return;}while(!feof(fp)) {ch = fgetc(fp);if(ch == EOF)break;putchar(ch);}fclose(fp);
}


TASK4

点击查看代码
#include <stdio.h>int main() {int count = 0;int ch;FILE *fp;fp = fopen("data4.txt", "r");if (fp == NULL) {printf("fail to open file\n");return 1;}while ((ch = fgetc(fp)) != EOF) {if (!(ch == ' ' || ch == '\n' || ch == '\t')) {count++;}}printf("data4.txt中共包含字符数(不记空白符):%d\n", count);fclose(fp);return 0;
}

TASK5

点击查看代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>#define N 10typedef struct {long int id;char name[20];float objective;    // 客观题得分float subjective;   // 操作题得分float sum;          // 总分char ans[10];       // 考试结果
} STU;// 函数声明
void finput(STU st[], int n);
void foutput(STU st[], int n);
void output(STU st[], int n);
int process(STU st[], int n, STU st_pass[]);int main() {STU stu[N], stu_pass[N];int cnt;double pass_rate;printf("从文件读入%d个考生信息...\n", N);finput(stu, N);printf("\n对考生成绩进行统计...\n");cnt = process(stu, N, stu_pass);printf("\n通过考试的名单:\n");output(stu_pass, cnt);      // 输出到屏幕foutput(stu_pass, cnt);    // 输出到文件pass_rate = 1.0 * cnt / N;printf("\n本次等级考试通过率: %.2f%%\n", pass_rate*100);return 0;
}// 把通过考试的考生完整信息输出到屏幕上
// 准考证号,姓名,客观题得分,操作题得分,总分,结果
void output(STU st[], int n) {int i;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", st[i].id, st[i].name, st[i].objective, st[i].subjective, st[i].sum, st[i].ans);
}// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
void finput(STU st[], 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", &st[i].id, st[i].name, &st[i].objective, &st[i].subjective);}fclose(fin);
}// 把通过考试的考生完整信息写入文件list_pass.txt
// 准考证号,姓名,客观题得分,操作题得分,总分,结果
void foutput(STU s[], int n) {FILE *fout;int i;// 保存到文件fout = fopen("list_pass.txt", "w");if (!fout) {printf("fail to open or create list_pass.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].ans);fclose(fout);
}// 对考生信息进行处理:计算每位考生考试总分、结果;统计考试通过的人数
int process(STU st[], int n, STU st_pass[]) {// 待补足// ×××int i,count = 0;for (i = 0; i < n; i++){st[i].sum = st[i].objective + st[i].subjective;if(st[i].sum >= 60){strcpy(st[i].ans,"pass");st_pass[count++] = st[i];}elsestrcpy(st[i].ans,"fail");}return count;
}


TASK6

点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>#define N 100struct STU {long int id;char name[N];char cla[N];
} st[N], lucky[N];void func1(void);
int func2(void);
void func3(void);int main() {int j, n;func1();srand((unsigned)time(NULL));for (j = 0; j < 5; j++) {n = func2();lucky[j] = st[n];printf("%ld\t %s\t %s\t\n", lucky[j].id, lucky[j].name, lucky[j].cla);}func3();getchar();return 0;
}void func1(void) {int i;FILE *fp;fp = fopen("list.txt", "r");if (fp == NULL) {printf("Failed to open file\n");return;}i = 0;while (fscanf(fp, "%ld %s %s", &st[i].id, st[i].name, st[i].cla) == 3 && i < N) {++i;}fclose(fp);
}int func2(void) {return rand() % 80;
}void func3(void) {int j;FILE *fout;fout = fopen("lucky.txt", "w");if (fout == NULL) {printf("Failed to open file\n");return;}for (j = 0; j < 5; j++) {fprintf(fout, "%ld\t %s\t %s\t\n", lucky[j].id, lucky[j].name, lucky[j].cla);}fclose(fout);
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/44928.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

LLM大模型: DPO原理和源码解析

1、前段时间国外某大学反向抄袭国内某团队的大模型闹得沸沸扬扬,国内被抄袭的大模型是MiniCPM,详细资料:https://github.com/OpenBMB/MiniCPM ; 能被国外同行抄袭,必定有过人之处,粗略看了一下https://github.com/OpenBMB/MiniCPM/blob/main/model/modeling_minicpm.py 模…

[转]ECS在游戏后端开发的应用

以下转自知乎南盼:https://zhuanlan.zhihu.com/p/559776142ECS作为一种经典的GamePlay架构,凭借与oop截然不同的数据和逻辑分离的架构设计,使其在游戏客户端领域拥有诸多独有优势,深受很多客户端开发同学的推崇。本文从后端开发的视角出发,期望能借鉴ECS的思想来解决游戏后…

由心知天气服务器响应的实时天气数据并进行JSON解析

由心知天气服务器响应的实时天气数据并进行JSON解析 #include <netinet/in.h> #include <arpa/inet.h> #include <stdio.h> #include <errno.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include…

2024.6.17鲜花/错误的号码

XY 星的星际新闻报一直不太畅销,所以报纸上会有一些广告,毕竟星际新闻局的非机器人员工也得吃饭。 有一则广告是这样的:【数据删除】研学基地位于【数据删除】,该研学基地致力于让学生体验一个幻想纪前的生活并培养学生不借助现代高科技的群居生活能力。该研学基地将于幻想…

红日靶场3

环境搭建 拿到靶场有5台机子,配置网段,仅主机模式网段vmnet2网段为192.168.93.0即可,出网网卡设置为桥接即可,点击继续运行即可 注意的是web机的两台linux开启后记得拍快照,web机隔一段时间web服务会出问题 web渗透 主机发现(我的桥接网段是192.168.1.0) namp -sP 192.168…

2024/6/9

今天写数据库的实验五,使用Java写了一个十分简易的数据库,连输入都没有,只是证明我用Java连上了sqlserver,代码如下:import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLExc…

2024-06-17-Spring 源码阅读(三)Bean 的生命周期

由于 Spring 源码非常多,博客中贴源码会占用大量篇幅,阅读困难。详细分析部分会以 commit 提交形式关联源码提交,画图例来说明源码整体逻辑。 Bean 生命周期主体逻辑 相关代码:Bean的基本创建流程、lazyInit、循环依赖 Bean 对象创建基本流程 通过最开始的关键时机点分析,…

C# TEKLA 二次开发 版本兼容性解决方案

制作的exe程序,就存在版本兼容性问题 用2022 api编译的exe在2024 中无法启动 解决方案 将exe放在如下位置从此处启动exe即可从宏中可以获取string XSDATADIR = ""; TeklaStructuresSettings.GetAdvancedOption("XSDATADIR", ref XSDATADIR);string extens…