实验任务1
略
实验任务2
略
实验任务3
如图,运行程序之后正确输出了降序的信息,并且生成了file3.dat并且其中的数据信息直观可读。
实验任务4
ex4.1
如图,程序正确输出了降序的信息,同时生成了file4.dat,但是由于该文件是二进制文件,所以对于我们人类来说并不直观。
ex4.2
#include<stdio.h> #include<stdlib.h> #define N 10 typedef struct student{ int num; char name[20]; int score; }STU; int main(){ FILE *fin, *fout; STU st[10]; int i=0; fin=fopen("file4.dat","rb"); if(!fin){ printf("Error 404\n"); exit(0); } while(!feof(fin))fread(st+(i++),sizeof(STU),1,fin); fclose(fin); for(int j=0;j<N;j++)printf("%-6d%-10s%5d\n", st[j].num, st[j].name, st[j].score); return 0; }
实验任务5
#include<stdio.h> #include<stdlib.h> #include<string.h> const int N=10; 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; } void input(STU s[], int n){ FILE *fin; fin = fopen("examinee.txt","r"); if(!fin){ printf("Error\n"); exit(0); } for(int 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); } void process(STU s[], int n){ STU temp; for(int i=0;i<n;i++)s[i].sum = s[i].objective + s[i].subjective; for(int i=0;i<n-1;i++){ int k=i; for(int j=i+1;j<n;j++) if(s[k].sum<s[j].sum){ temp = s[k]; s[k] = s[j]; s[j] = temp; } } for(int i=0;i<n;i++) if(i<=0.1*n)strcpy(s[i].level, "优秀"); else if(i>0.1*n && i<=0.5*n)strcpy(s[i].level,"合格"); else strcpy(s[i].level, "不合格"); } void output(STU s[], int n){ FILE *fin; fin = fopen("result.txt","w"); if(!fin){ printf("Error\n"); exit(0); } fwrite(s, sizeof(STU), n, fin); for(int i=0;i<n;i++)printf("%-5ld%-10s%-6.0f%-5.0f%-5.0f%6s\n",s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level); fclose(fin); }
实验总结:或许对很多人来说这是最后一次C语言实验,但对于我而言,我认为自己的C语言学习才刚刚开始。学了一个学期C语言,感觉自己还是只能写一点简单的代码、摆弄摆弄冰冷的运行小黑窗,完全没有做出任何可视化的东西,这无疑带来一定的挫败感。但同时也正是由于内心的不甘心,驱使鞭策着我将编程学习继续坚定地进行下去,虽然自己水平不高、功力不足,但我愿意静下心来,和时间作朋友、相信复利性学习的力量,不断的去积累。2021年来了,愿我在新的一年里求知若渴、虚心若愚,在编程上学有所成:)