码迷,mamicode.com
首页 > 其他好文 > 详细

第七次实验

时间:2019-06-25 00:11:25      阅读:73      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!