标签:const proc 读取 打开 pen window png student ISE
实验七 文件(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 <stdio.h> #include <stdlib.h> #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<N; 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<N; i++) printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score); return 0; }
(运行结果截图)
哭了哭了,所谓的乱码,暂时我实在没有办法解决了,该想的办法我都想过。等我找到办法我回来补上。
五、实验任务五
(补足后的完整程序源码)
#include <stdio.h> #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<n; 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<n; 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<n; i++) { s[i].sum=s[i].objective+s[i].subjective; } for(j=0;j<n;j++){ max=j; for (i=j; i<n; i++) { if (s[i].sum>s[max].sum) { max=i; } } temp=s[j]; s[j]=s[max]; s[max]=temp; } for (i=0; i<n; 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.
标签:const proc 读取 打开 pen window png student ISE
原文地址:https://www.cnblogs.com/victoria111/p/14187243.html