实验七

实验任务三:屏幕上正确输出了分数由高到低的信息,并生成了文本文件file3.dat

                      用记事本程序打开,里面内容正确,但不直观可读。

实验任务四:子任务一  屏幕上正确输出了分数由高到低的信息,并生成了文本文件file4.dat

                                       用记事本程序打开,里面内容正确,但不直观可读。

#include <stdio.h>
#include <string.h>
int main (void) {
    FILE *fp;
    char ch;
    fp=fopen("C:file4.dat","r");
    if(fp==NULL)
    printf("can not be open\n");
    else
    {
        fscanf(fp,"%c",&ch);
        while (!feof(fp))
        {
            putchar (ch);
            fscanf(fp,"%c",&ch);
            }
            fclose(fp);}
            printf("\n");    
}

#include <stdio.h>
#include <string.h>
#include <stdlib.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("examinee.txt","r");
     if(fin==NULL){
         printf("fail to open examinee.txt\n");
         exit(0);
     }
     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("result.txt","w");
     if(fout==NULL){
         printf("fail to open result.txt\n");
         exit(0);
     }
     for(i=0;i<n;i++){
     printf("%-6ld %-8s %-10.2lf %-12.2lf %-12.2lf %-3s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
     fprintf(fout,"%-6ld %-8s %-10.2lf %-12.2lf %-12.2lf %-3s\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
     }
     fclose(fout); 
}

// 对考生信息进行处理:计算总分,排序,确定等级
void process(STU s[], int n) {
	// 补足代码
	// ××× 
	    int i,j;STU temp;
    for(i=0;i<n;i++){
    s[i].sum=s[i].objective+s[i].subjective;}
    for(i=0;i<n;i++){
    for(j=0;j<n-1-i;j++){
        if(s[j].sum<s[j+1].sum){
            temp=s[j+1];
            s[j+1]=s[j];
            s[j]=temp;
        }
    }
}
    for(i=0;i<n;i++){
        if((i+1)<=0.1*n)
        strcpy(s[i].level,"优秀");
        else if((i+1)>0.5*n)
        strcpy(s[i].level,"不合格");
        else
        strcpy(s[i].level,"合格");
         
    }
}

  

上课听的时候感觉自己明白了,实际操作的时候又弄不明白,看代码能明白,自己写代码错误频出

posted @ 2021-06-15 22:08  四班王瑞  阅读(22)  评论(1编辑  收藏  举报