1. 程式人生 > 實用技巧 >實驗七 黃厚銘202083450067

實驗七 黃厚銘202083450067

實驗任務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年來了,願我在新的一年裡求知若渴、虛心若愚,在程式設計上學有所成:)