作业7

news/2024/9/22 18:23:02

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.

点击查看代码
// 将图书信息以数据块方式写入二进制文件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/46982.html

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

相关文章

使用cloudflare-works搭建自己docker加速源

在网上看到了许多教程,基本上部署都是手动的,docker镜像都要手动输入选择重新部署。要么都是些基本镜像仓库。 视频地址:【CloudFlare搭建doker加速源。都这么长时间了,你的docker还是跑不通吗?】 https://www.bilibili.com/video/BV1F533eHEsB/?share_source=copy_web&a…

AI 大模型企业应用实战(06)-初识LangChain

LLM大模型与AI应用的粘合剂。 1 langchain是什么以及发展过程 LangChain是一个开源框架,旨在简化使用大型语言模型构建端到端应用程序的过程,也是ReAct(reason+act)论文的落地实现。2022年10月25日开源 54K+ star 种子轮一周1000万美金,A轮2500万美金 11个月里累计发布200多…

创新实现(九)——博客处理

博客部分 当用户需要针对OJ上的比赛以及题目进行相关讨论的时候,OJ平台给大家一个博客平台供大家交流讨论。博客部分中利用blogs.php文件进行最近前10个博客的显示,用户可以利用右上角的按钮查看自己的博客情况以及自己写一个博客。 博客总览blogs.php文件用于生成一个博客总…

面向对象大作业总结(三)

一.前言:本次博客是对第七到八次大作业进行总结。我认为第七次大作业相比于同一道题来说,并没有进行太大的改变,因为它不需要考虑每个元件左右两端到底电位状态如何,也就是在前两次的基础上增加了一些并联电路,这个时候我们只要在MainLine类里新增并联以及串联电路的判断就…

java使用@Controller注解跳转到thmyleaf页面时候报错

报错如下###### 当我使用RestController时候接口可以得到返回的对象↓但是查看RestController和Controller的区别之后:也就是说@RestController返回的是一个对象,@Controller默认情况下,方法的返回值会被解析为一个视图名称,并寻找与该名称匹配的视图进行渲染。这意味着返回…

Centos下安装ffmpeg

源安装第一种方式:首先需要安装yum源: 这个源安装的ffmpeg版本是3.4yum install epel-release yum install -y https://mirrors.ustc.edu.cn/rpmfusion/free/el/rpmfusion-free-release-7.noarch.rpm然后可以安装ffmpegyum install -y ffmpeg ffmpeg-devel第二种方式: 换一个…

6.23

恼瑞平洛谷的题单系统( 我本来把不太懂的题都丢到首页的做题计划里了 但是嫌那玩意看着太烦 (因为不会) 就想放到个人题单里面结果这玩意 基本信息 和 题目编排 两栏的保存键是不互通的 我以为在 基本信息 里点保存能作用到 题目编排 里 然后我题就没了,这下不用担心不会做…

mosquitto

mosquitto.conf mosquitto.conf是mosquitto的配置文件, # Config file for mosquitto# ================================================================= # General configuration # =================================================================per_listener_sett…