实验7_文件应用编程

news/2024/9/24 18:07:04
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{int cnt=0;char c;FILE *fp;fp=fopen("data4.txt","r");while(!feof(fp)){c=fgetc(fp);if(c=='\n'||c==' '||c=='\t')continue;cnt++;}printf("文件中所含字符数(不含空白符)有:%d",--cnt);return 0;
}

#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,j,cntt=0;for(i=0,j=0;i<n;i++){st[i].sum=st[i].subjective+st[i].objective;if(st[i].sum>=60){st_pass[j]=st[i];strcpy(st_pass[j].ans,"pass");cntt++;j++;}elsestrcpy(st_pass[i].ans,"fail");}return cntt;
}

#include<stdio.h>
#include<stdlib.h>
#include<time.h>#define N 80 typedef struct {long num;char name[20];char class[20];
}STU;int main(){STU stu[N];int x[5];int i,j;int k,t=0;FILE *fp;FILE *ptr;fp=fopen("list.txt","r");if(fp==NULL){printf("fail to open \n");return 1; }ptr=fopen("lucky.txt","w");if(ptr==NULL){printf("fail to open file\n");return 1; }while(!feof(fp)){for(i=0;i<N;++i)fscanf(fp,"%ld %s %s",&stu[i].num ,stu[i].name ,stu[i].class );}fclose(fp);srand(time(NULL));k = rand() % N;x[0]=k;printf("%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);fprintf(ptr, "%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);for (i = 1; i < 5; ++i) {k = rand() % N;x[i]=k;for (j = 0; j < i; ++j) {if (x[i] == x[j]) {t=1;}} if(t==0){printf("%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);fprintf(ptr, "%ld %-10s %-20s\n", stu[k].num, stu[k].name, stu[k].class);}if(t==1){i=i-1;}}fclose(ptr);return 0;
}


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

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

相关文章

java面向对象三大特征

免责声明:java基础资料均来自于韩顺平老师的《循序渐进学Java零基础》教案,具体视频内容可以去B站观看,这些资料仅用于学习交流,不得转载用于商业活动 1.Java面向对象三大特征 Java面向对象编程有三大特征:封装、继承、多态 1.1 封装 封装(encapsulation)就是把抽象出的数…

米尔全志T527系列加推工控板和工控机,更多工业场景DEMO

自米尔首发基于全志T527系列核心板以来,这款基于八核CPU的高性能国产核心板得到广大客户的好评。这款产品支持Android13、Linux5.15操作系统,还将适配Ubuntu系统,满足开发者们更灵活地开发各种创新应用。 米尔为满足不同的客户需求,推出基于全志T527的全系列的产品:米粉派…

manim边学边做--BulletedList

BulletedList是Mobjects分类中用来显示列表的class。使用BulletedList可以帮助我们快速生成一个对齐的列表结构。BulletedList在manim各个模块中的位置如上图中所示。 1. 主要参数 BulletedList的主要参数有:参数名称 类型 说明items list 列表的内容buff float 列表内容之间的…

vue-devtools (firefox浏览器,火狐浏览器) Vue调试

vue-devtools (firefox浏览器,火狐浏览器) vuedevtoolsvue-devtools (firefox浏览器)打开firefox浏览器,使用快捷键【Ctrl+Shift+A】打开组件管理列表,并搜索vue安装重启Firefox访问一个Vue应用,打开 开发者工具

excel表结构生成powerDesigner模型,生成建表语句sql

一、excel表结构二、PowerDesigner根据Excel导入模型 1、首先通过PowerDesigner创建物理模型2、执行脚本,弹出 “生成成功”后即创建完成 工具->Execute commands->Edit/Run Script,脚本如下:点击查看代码第一行是表信息,依次是:表编码、表名称、表注释第二行及…

Java基础:throw和throws的详解

总结来说,throw是用来抛出一个具体的异常实例,而throws是用来声明方法可能会抛出哪些类型的异常,是对调用者的一种通知和要求。 1. throw作用: throw关键字用于在方法体内实际抛出一个异常实例。当程序运行到throw语句时,指定的异常会被创建并抛出,立即终止当前方法的执行…

Zyxel NAS设备的CVE-2024-29973远程代码执行漏洞验证

概述 最近,Zyxel NAS 设备曝出了一个重大安全漏洞(CVE-2024-29973),该漏洞允许远程攻击者在受影响的设备上执行任意代码。这一漏洞已经被广泛关注,并被证实可以在实际中复现。本文将详细介绍该漏洞的成因、利用方式以及如何检测和防御这种攻击。 漏洞成因 Zyxel NAS 设备中…

vscode+robotframework的实践-selenium(更新中)

一 说明上一次使用robotframework还是2019年毕业刚进入工作的时候,使用的是robotframework的官方配套编辑器RIDE进行自动化脚本编写,在使用的过程中偶尔会遭遇卡顿、闪退等问题,当时排查问题大多数是因为RIDE自身与python版本以及操作系统之间的兼容性问题导致的,那时候没有…