实验 7

news/2024/9/22 21:13:05

task 1

点击查看代码
// 将图书信息写入文本文件data1.txt
// 再从文件中读取图书信息,打印输出到屏幕上,并显示行号#include <stdio.h>
#include <stdlib.h>
#define N 80
#define M 100typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();system("pause:");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);
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240617143949260-582772814.png)

task 2

点击查看代码
// 将图书信息以数据块方式写入二进制文件data2.dat
// 再从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号#include <stdio.h>
#define N 80
#define M 7
#include <stdlib.h>
typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();system("pause:");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);
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240617150047835-150705488.png)
点击查看代码
// 将图书信息以数据块方式写入二进制文件data2.dat
// 再从二进制文件data2.dat以数据块方式读取图书信息,打印输出到屏幕,并显示行号#include <stdio.h>
#define N 80
#define M 7
#include <stdlib.h>
typedef struct {char name[N];   // 书名 char author[N]; // 作者 
} Book;// 函数声明
void func1();
void func2();int main() {func1();func2();system("pause:");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);
}

task 3

点击查看代码
#include <stdio.h>
#define N 5
#define M 80
#include <stdlib.h>
// 函数声明
void func1();
void func2();
void func3();int main() {func1();func2();func3();system("pause:");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);
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240617151159179-1347034300.png)

task 4

点击查看代码
#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;}while ((ch = fgetc(fp)) != EOF) {if (!(ch == ' ' || ch == '\n' || ch == '\t')) {count++;}}printf("data4.txt中共包含字符数(不记空白符):%d\n", count);fclose(fp);return 0;
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240623183146086-1458431972.png)

task 5

点击查看代码
#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);system("pause:");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;
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240623185626256-1758636273.png) task 6
点击查看代码
#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);
}
![](https://img2024.cnblogs.com/blog/3409831/202406/3409831-20240623190311169-898182157.png)

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

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

相关文章

微积分基本公式

积分上限的函数及其导数 设 \(f(x)\) 在区间 \([a,b]\) 上连续,\(x\)为 \([a,b]\) 上任意一点,则\(f(x)\)在 \([a,b]\) 区间也是连续的 因此定积分: \(\int_{a}^{x} f(t)dt\) 存在 故对任意 \(x \in [a,b]\),有唯一确定的数 \(\int_{a}^{x} f(t)dt\) 与之对应 由此在 \([a,…

HarmonyOS SDK助力鸿蒙原生应用“易感知、易理解、易操作”

6月21-23日,华为开发者大会(HDC 2024)盛大开幕。6月23日上午,《HarmonyOS开放能力,使能应用原生易用体验》分论坛成功举办,大会邀请了多位华为技术专家深度解读如何通过根技术、开放能力、场景化控件等亮点能力,基于人的感知及操作习惯进而设计出更简单易用的鸿蒙原生应…

Containerd-cri常用功能

本文致力于学习并梳理Containerd,信息来源均参考至官方Github,原文链接如下补充。cri 工作架构link: https://github.com/containerd/containerd/blob/main/docs/cri/architecture.mdKubelet 通过 CRI 运行时服务 API 调用 cri 插件来创建 pod; cri 创建 pod 的网络命名空间…

ACCESS 关于小白对于复杂窗体布局中,取不到对应控件正确路径的另类解决方案

有这样一个窗体,它的布局如下图,我需要刷新 数据表E(数据表类型的窗体)的数据,路径怎么写? 这里提供一个思路,就是在数据表E里面写一个全局过程,比如Public sub ReQueryData()me.form.ReQuery end sub然后在需要调用的地方这么调用即可:From_数据表E.ReQueryData不是我不想写正…

经典游戏:吃豆人

该游戏的背景以黑色为主。画面中,“Google”6个字母组成回廊似的迷宫画面,四个颜色分别为红、黄、蓝、绿的鬼面符号在迷宫中穿梭,似乎在寻找一个半开半合的黄色圆圈符号。当记者按动键盘上的方位键时,发现该黄色圆圈符号可以行走,并且可以吞吃迷宫路径上的小黄豆,但遇到鬼…

域渗透之利用WMI来横向渗透

利用WMI横向渗透的优势就是WMI是Windows系统自带的,直接内存中运行命令不会痕迹,利用红日靶场复现了一下。目录前言wmi介绍wmiexec和psexec的区别wmic命令执行wmiexec.vbswmiexec.pyInvoke-WmiCommand.ps1 前言 上一篇打红日靶场拿域控是用ms17-010漏洞执行命令的方式,最后提…

LangChain转换链:让数据处理更精准

在开发AI Agent(智能体)时,我们经常需要对输入数据进行预处理,这样可以更好地利用LLM。LangChain提供了一个强大的工具——转换链(TransformChain),它可以帮我们轻松实现这一任务。上篇文章《5分钟了解LangChain的路由链》里主要介绍了路由链,核心类是LLMRouterChain和…

Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用

原文链接:http://cshelloworld.com/home/detail/1804473083243925504 当我们点击win10系统搜索框的时候,输入名称 ,win10会帮助我们匹配到对应的应用。这里搜索框实际上就是windows系统的开始菜单。 接下来我们随便找一个应用,右键,然后点击 打开文件位置,我们来看下这个…