热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实验七文件(实验终章)

实验七文件(Lastone)p.s最后一个实验居然是最坎坷的一个实验,怎么说呢,用的MacOS,一直在担心文件操作不能做,刚做的时候不断报错,上网查了半天,打开了路径开关,变成fa

实验七 文件(Last one)

p.s最后一个实验居然是最坎坷的一个实验,怎么说呢,用的MacOS,一直在担心文件操作不能做,刚做的时候不断报错,上网查了半天,打开了路径开关,变成fail to find。心如死灰,选择到机房在Windows系统下做实验,结果结果,不知道是不习惯系统还是操作的问题,还是不行。好吧好吧,在问了一个互联网行业的哥哥之后,选择了绝对路径来打开文件。终于成功读写。但是(关键性的转折),文件读是正常的,文件写总是乱码,最后还是在老师面前调试,解决了问题。实验报告虽迟但到。

p.p.s.终于终于,是最后一个实验了。怎么说呢,其实现在心里有点空空的。开始学习c语言之前听说不简单,给自己打了鸡血说要好好学习。看过很多数模竞赛的经验帖,都说事实上学会了一门语言之后,剩下的只是类比。我一直不相信在一个学期的学习之后就能完全掌握一门语言,但是,我总是希望自己能够学一点框架,至少学会一点计算机语言。无论会不会考试,至少会用这门语言写一点小东西。所以,七篇实验,还有很多心血来潮想到的小程序,每一个都在好好对待。所以现在在敲下实验终章的时候,有点感慨,不用再在周四恐慌这周的实验还没有打开,不用再被实验运行结果不对而抓破脑袋,我所期待了一个学期的实验终章,真正到来的时候却是有点不舍。今天是圣诞节,那就许愿今天能写完实验,期末考试能合自己心意。好了,啰哩啰嗦一大堆,实验终章,开机。

一.实验任务一

(验证性实验略)

二、实验任务二

(验证性实验略)

三、实验任务三

基于运行观察,回答问题:

1.运行程序,观察在屏幕上是否正确输出了按分数从高到低的排序信息?同时,在当前路径下,是否生成了文本文件file3.dat?

正确输出了按分数从高到低的排序信息。在当前路径下生成了文本文件file.dat;

2.尝试用记事本程序打开文件file3.dat观察里面的数据信息是否是正确的,并且是直观可读的?

是不正确的(数据正确,但是不知道是不是macOS的问题,名字乱码)和不直观可读的,名字乱码。

四、实验任务四

1.task1

回答子任务1中的问题:

运行程序,观察屏幕上是否正确输出了按分数由高到低排序的学生信息?同时,在当前路径下,是否生成了二进制文件file4.dat?尝试用记事本程序打开文件file.dat,观察里面的数据信息是否直观可读?

正确输出了分数由高到低的学生信息,同时在当前路径下,生成了二进制文件file4.dat。不直观可读,名字是乱码。

2.task2

(程序源代码)


// main.c
// task4.2
//
// Created by zky on 2020/12/24.
// 从文本数据文件file1.dat中读入数据,按成绩从高到低排序,并将排序结果输出到屏幕上,同时,也以二进制的方式存入文件file4.dat中
#include
#include

#define N 10
// 定义一个结构体类型STU
typedef struct student {
int num;
char name[20];
int score;
}STU;
int main() {
FILE
*fin;
STU st[N];
int i;

// 以只读文本方式打开文件file4.dat
fin = fopen("/Users/zky/Desktop/C/实验七/task4/file4.dat", "r");
if( !fin ) { // 如果打开失败,则输出错误提示信息然后退出程序
printf("fail to open file4.dat\n");
exit(
0);
}

//从fin指向的数据文件file1.dat中读取数据到结构体数组st
for(i=0; i)
fscanf(fin, "%d %s %d", &st[i].num, st[i].name, &st[i].score);

fclose(fin);
// 关闭fin指向的文件file4.dat


// 将排序后的数组st中数据输出到屏幕
for(i=0; i)
printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);


return 0;
}

(运行结果截图)

哭了哭了,所谓的乱码,暂时我实在没有办法解决了,该想的办法我都想过。等我找到办法我回来补上。

 技术图片

技术图片

五、实验任务五

(补足后的完整程序源码)


#include
#include
<string.h>
const int N = 10;
//定义结构体类型struct student,并定义其别名为STU
typedef struct student {
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打印考生完整信息:准考证号,姓名,客观题得分,操作题得分,总分,等级\n");
output(stu, N);

return 0;
}
// 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分
void input(STU s[], int n) {
FILE
*fin;
int i;
fin
=fopen("/Users/zky/Desktop/C/实验七/task5/examinee.txt", "r");
if (!fin) {
printf(
"fail to open examinee.txt\n");
}
for (i=0; 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;
fout
=fopen("/Users/zky/Desktop/C/实验七/task5/result.txt", "w");
if (!fout) {
printf(
"fail to open result.txt\n");
}
for (i=0; i) {
printf("%-6ld%-10s%3.2f%3.2f%3.2f%10s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
}
fwrite(s,
sizeof(STU), n, fout);
}
//对考生信息进行处理:计算总分,排序,确定等级
void process(STU s[], int n) {
int i,j;
int max=0;
char level1[20]="优秀";
char level2[20]="合格";
char level3[20]="不合格";
STU temp;
for (i=0; i) {
s[i].sum=s[i].objective+s[i].subjective;
}
for(j=0;j){
max=j;
for (i=j; i) {
if (s[i].sum>s[max].sum) {
max
=i;
}
}
temp
=s[j];
s[j]
=s[max];
s[max]
=temp;
}
for (i=0; i) {
if (i+1<=0.1*n) {
strcpy(s[i].level, level1);
}
else if (i+1<=0.5*n){
strcpy(s[i].level, level2);
}
else{
strcpy(s[i].level, level3);
}
}
}

(运行结果截图)

技术图片

六、实验总结

1.本次实验中踩的坑

天呐,这不就是我在开头写的?重复一下,重复我的悲伤:最后一个实验居然是最坎坷的一个实验,怎么说呢,用的MacOS,一直在担心文件操作不能做,刚做的时候不断报错,上网查了半天,打开了路径开关,变成fail to find。心如死灰,选择到机房在Windows系统下做实验,结果结果,不知道是不习惯系统还是操作的问题,还是不行。好吧好吧,在问了一个互联网行业的哥哥之后,选择了绝对路径来打开文件。终于成功读写。但是(关键性的转折),文件读是正常的,文件写总是乱码,最后还是在老师面前调试,解决了问题。实验报告虽迟但到。

2.理解和思考

思考了选做实验,尝试了一下没有结果,因为时间的关系期末考前没有很多时间去抠它,但是,寒假的时候我会把它写出来的。I promise.

实验七 文件(实验终章)



推荐阅读
  • C语言是计算机科学和编程领域的基石,许多初学者在学习过程中会感到困惑。本文将详细介绍C语言的基本概念、关键语法和实用示例,帮助你快速上手C语言。 ... [详细]
  • 解决网页乱码问题的实用方法
    网页乱码问题在开发中较为常见,主要由文件编码、程序字符集设置和数据库连接字符集设置不当引起。本文将详细介绍如何逐一排查并解决这些问题。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 本文介绍了如何使用线段树实现区间加法和区间查询操作,包括详细的代码实现和解释。 ... [详细]
  • 用C语言实现的科学计算器,支持2种常量,10种基本函数,Ans寄存器。相对来说拓展性应该是不错的,思路是首先化简复杂名称的函 ... [详细]
  • 线段树,注 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
  • 最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • C语言编写线程池的简单实现方法
    2019独角兽企业重金招聘Python工程师标准好文章,一起分享——有时我们会需要大量线程来处理一些相互独立的任务,为了避免频繁的申请释放线程所带 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • 本文介绍了三种解决 Git Push 冲突的方法,包括创建新分支、手动解决冲突和强行推送。这些方法适用于不同的开发场景,如版本迭代、多人协作和个人开发。 ... [详细]
  • Excel VBA自动化添加数字证书(续)
    本文继续探讨如何在Excel VBA中自动添加数字证书。上一篇文章因突发情况未能完成,本次将详细介绍证书的生成和集成方法。 ... [详细]
  • 在尝试将 mysqldump 文件加载到新的 MySQL 服务器时,遇到因使用保留关键字 'table' 导致的语法错误。 ... [详细]
  • 第14周实践项目(4)-验证平衡二叉树
    问题**Copyright(c)2015,烟台大学计算机学院*Allrightsreserved.*文件名称:test.cpp*作者:王敏*完成日 ... [详细]
author-avatar
私受他
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有