标签:scan roc 二进制文件 代码 scanf fclose 技术 进制 fail
ex2
1 #include <stdio.h> 2 #include <string.h> 3 const int N = 10; 4 5 // 定义结构体类型struct student,并定义其别名为STU 6 typedef struct student { 7 long int id; 8 char name[20]; 9 float objective; /*客观题得分*/ 10 float subjective; /*操作题得分*/ 11 float sum; 12 char level[10]; 13 }STU; 14 15 // 函数声明 16 void input(STU s[], int n); 17 void output(STU s[], int n); 18 void process(STU s[], int n); 19 20 int main() { 21 STU stu[N]; 22 23 printf("录入%d个考生信息: 准考证号,姓名,客观题得分(<=40),操作题得分(<=60)\n", N); 24 input(stu, N); 25 26 printf("\n对考生信息进行处理: 计算总分,确定等级\n"); 27 process(stu, N); 28 29 printf("\n打印考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级\n"); 30 output(stu, N); 31 32 return 0; 33 } 34 35 // 从文本文件examinee.txt读入考生信息:准考证号,姓名,客观题得分,操作题得分 36 void input(STU s[], int n) { 37 // 补足代码 38 FILE *fp; 39 int i; 40 41 fp = fopen("examinee.txt", "r"); 42 if (fp == NULL) { 43 printf("fail to open examinee.txt\n"); 44 } 45 46 for(i=0; i<n; i++){ 47 fscanf(fp, "%d %s %f %f", &s[i].id, s[i].name, &s[i].objective, &s[i].subjective); 48 49 } 50 fclose(fp); 51 } 52 53 // 对考生信息进行处理:计算总分,排序,确定等级 54 void process(STU s[], int n) { 55 // 补足代码 56 STU t; 57 int i; 58 59 for(i=0; i<n; i++) 60 { 61 s[i].sum=s[i].objective+s[i].subjective; 62 } 63 64 for(i=0; i<n; i++) 65 for(j=0;j<n-i-1;j++) 66 if(s[j].sum<s[j+1].sum) 67 { 68 t=s[j]; 69 s[j]=s[j+1]; 70 s[j+1]=t; 71 } 72 73 for(i=0;i<n;i++) 74 { 75 if((i+1)<=n*0.1) 76 strcpy(s[i].level,"优秀"); 77 else if((i+1)>n*0.1&&(i+1)<=n*0.5) 78 strcpy(s[i].level,"合格"); 79 else 80 strcpy(s[i].level,"不合格"); 81 } 82 } 83 84 // 输出考生完整信息: 准考证号,姓名,客观题得分,操作题得分,总分,等级 85 // 不仅输出到屏幕上,还写到文本文件result.txt中 86 void output(STU s[], int n) { 87 // 补足代码 88 FILE *fp; 89 int i; 90 91 fp = fopen("result.txt", "w"); 92 if (fp == NULL) { 93 printf("fail to open result.txt\n"); 94 } 95 96 for(i=0; i<n; i++) { 97 printf("%d %s %.2lf %.2lf %.2lf %s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level); 98 fprintf(fp, "%d %s %.2lf %.2lf %.2lf %s\n", s[i].id, s[i].name, s[i].objective, s[i].subjective, s[i].sum, s[i].level); 99 } 100 101 fclose(fp); 102 }
诶呀最后截止日期快到了才想起来做,太匆忙了
读二进制文件
#include <stdio.h> #include <stdlib.h> #define N 10 typedef struct student { int num; char name[20]; int score; }STU; int main() { FILE *fin; STU st[N]; int i; fin = fopen("file4.dat", "rb"); if (fin == NULL) { printf("fail to open file4.dat\n"); exit(0); } for(i=0; i<N; i++) if(fread(st, sizeof(STU), N, fin)!=EOF) printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score); fclose(fin); return 0;}
标签:scan roc 二进制文件 代码 scanf fclose 技术 进制 fail
原文地址:https://www.cnblogs.com/zhaoyingshan/p/11080387.html