实验7

task1
#include <stdio.h>
#include <stdlib.h>

int main() {
    FILE *fin, *fout; // ¶¨ÒåÎļþÀàÐÍÖ¸Õë
    int ch;
    
    fin = fopen("file1.txt", "r"); // ÒÔÖ»¶ÁÎı¾·½Ê½´ò¿ªÎļþfile1.txt
    if (fin == NULL) {
        printf("fail to open file1.txt\n");
        exit(0);    
    } 
    
    fout = fopen("file2.txt", "w"); // ÒÔдÎı¾·½Ê½´ò¿ªÎļþfile2.txt, Èç¹ûÎļþ²»´æÔÚ£¬¾Í´´½¨Ò»¸ö
    if (fout == NULL) {
        printf("fail to open or create file2.txt\n");
        exit(0);
    } 
    
    while( !feof(fin) ) {
        ch = fgetc(fin);  // ´ÓfinÖ¸ÏòµÄÎļþfile1.txtÖжÁÈ¡µ¥¸ö×Ö·û£¬ÔÝ´æÔÚ×Ö·û±äÁ¿chÖÐ 
        
        if(ch >= 'a' && ch <= 'z')  // Èç¹ûÊÇСд×Öĸ£¬Ôòת»»³É´óд 
            ch -= 32;
        
        fputc(ch, fout); // ½«×Ö·û±äÁ¿chÖеÄ×Ö·ûдÈëfoutÖ¸ÏòµÄÎļþfile2.txtÖÐ 
    }
    
    fclose(fin);    
    fclose(fout);
    
    return 0;
}

 

 

 

 

 

task2

#include <stdio.h> 
#include <stdlib.h>

#define N 10

// ¶¨ÒåÒ»¸ö½á¹¹ÌåÀàÐÍSTU 
typedef struct student {
    int num;
    char name[20];
    int score;
}STU;

int main() {
    STU st, stmax, stmin;
    int i;
    FILE *fp;
    
    // ÒÔÖ»¶ÁÎı¾·½Ê½´ò¿ªÎļþfile1.dat 
    fp = fopen("file1.dat", "r");
    if( !fp ) {  // Èç¹û´ò¿ªÊ§°Ü£¬ÔòÊä³ö´íÎóÌáʾÐÅÏ¢£¬È»ºóÍ˳ö³ÌÐò 
        printf("fail to open file1.dat\n");
        exit(0);
    }
    
    stmax.score = 0;    // Ïȼٶ¨×î¸ß·ÖÊÇ0£¬ºóÃæÈç·¢Ïֱȵ±Ç°×î¸ß·Ö»¹¸ßµÄ·ÖÊý£¬¾Í¸üÐÂ×î¸ß·Ö 
    stmin.score = 100;    // Ïȼٶ¨×îµÍ·ÖÊÇ100·Ö£¬ºóÃæÈç·¢Ïֱȵ±Ç°×îµÍ·Ö¸üµÍµÄ·ÖÊý£¬¾Í¸üÐÂ×îµÍ·Ö 
    
    for(i=0; i<N; i++) {
        fscanf(fp, "%d %s %d", &st.num, st.name, &st.score);  // ´ÓfpÖ¸¶¨µÄÎļþÖиñʽ»¯¶Áȡһ¸öѧÉúÐÅÏ¢
        
        if(st.score > stmax.score)
            stmax = st;
        else if(st.score < stmin.score)
            stmin = st; 
    } 
    
    fclose(fp);
    
    printf("×î¸ß·ÖѧÉúÐÅÏ¢: %5d%15s%5d\n", stmax.num, stmax.name, stmax.score);
    printf("×îµÍ·ÖѧÉúÐÅÏ¢: %5d%15s%5d\n", stmin.num, stmin.name, stmin.score);

    return 0;
}

task3

// ´ÓÎı¾Êý¾ÝÎļþfile1.datÖжÁÈëÊý¾Ý£¬°´³É¼¨´Ó¸ßµ½µÍÅÅÐò£¬½«ÅÅÐò½á¹ûÊä³öµ½ÆÁÄ»ÉÏ£¬Í¬Ê±ÒÔÎı¾·½Ê½´æÈëÎļþfile3.datÖС£
#include <stdio.h> 
#include <stdlib.h>

#define N 10

// ¶¨ÒåÒ»¸ö½á¹¹ÌåÀàÐÍSTU 
typedef struct student {
    int num;
    char name[20];
    int score;
}STU;

void sort(STU *pst, int n);  // º¯ÊýÉùÃ÷ 

int main() {
    FILE *fin, *fout;
    STU st[N];
    int i;
    
    // ÒÔÖ»¶ÁÎı¾·½Ê½´ò¿ªÎļþfile1.dat 
    fin = fopen("file1.dat", "r");
    if( !fin ) {  // Èç¹û´ò¿ªÊ§°Ü£¬ÔòÊä³ö´íÎóÌáʾÐÅÏ¢£¬È»ºóÍ˳ö³ÌÐò 
        printf("fail to open file1.dat\n");
        exit(0);
    }
    
    // ´ÓfinÖ¸ÏòµÄÊý¾ÝÎļþfile1.datÖжÁÈ¡Êý¾Ýµ½½á¹¹ÌåÊý×ést
    for(i=0; i<N; i++) 
        fscanf(fin, "%d %s %d", &st[i].num, st[i].name, &st[i].score);
    
    fclose(fin);  // ¹Ø±ÕfinÖ¸ÏòµÄÎļþfile1.dat
    
    // µ÷Óú¯Êýsort()¶ÔÊý×éstÖÐÊý¾Ý£¬°´·ÖÊýÓɸߵ½µÍÅÅÐò 
    sort(st, N);
    
    // ÒÔд·½Ê½´ò¿ª/´´½¨Îı¾Îļþfile3.dat
    fout = fopen("file3.dat", "w");
    if( !fout ) {  // Èç¹û´ò¿ªÊ§°Ü£¬ÔòÊä³ö´íÎóÌáʾÐÅÏ¢£¬È»ºóÍ˳ö³ÌÐò 
        printf("fail to open file1.dat\n");
        exit(0);
    }
    
    // ½«ÅÅÐòºóµÄÊý×éstÖÐÊý¾ÝÊä³öµ½ÆÁÄ»£¬Í¬Ê±£¬Ò²Ð´ÈëÎļþfile3.dat
    for(i=0; i<N; i++) {
        printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);
        fprintf(fout, "%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);
    }
        
    fclose(fout);  // ¹Ø±ÕfoutÖ¸ÏòµÄÎļþfile3.dat
    
    return 0;
}

// º¯Êý¹¦ÄÜÃèÊö£º¶ÔpstÖ¸ÏòµÄn¸öSTU½á¹¹ÌåÊý¾Ý½øÐÐÅÅÐò£¬°´³É¼¨Êý¾ÝÏîÓɸߵ½µ×ÅÅÐò 
// ÅÅÐòËã·¨£ºÑ¡ÔñÅÅÐòËã·¨ 
// ˵Ã÷£ºÑ¡ÔñÅÅÐòËã·¨ÊÇÈ·¶¨µÄ£¬µ«Æä¾ßÌåʵÏÖ·½Ê½ºÍϸ½ÚÈ´ÊÇÁé»î¶àÑùµÄ
// ±¾ÀýÖУ¬Ñ¡ÔñÅÅÐòËã·¨µÄº¯ÊýÌåÖУ¬¶¼ÊÇͨ¹ýÖ¸Õë±äÁ¿²Ù×÷µÄ¡£
// Çë½áºÏ´úÂëÌå»áºÍÀí½â£¬×öµ½Àí½âËã·¨±¾ÖÊ£¬²ÅÄÜÓ¦¶ÔºÍÀí½âÁé»î¶àÑùµÄʵÏÖÐÎʽ 
void sort(STU *pst, int n) {
    STU *pi, *pj, t;
    
    for(pi = pst; pi < pst+n-1; pi++)
        for(pj = pi+1; pj < pst+n; pj++) 
            if(pi->score < pj->score) {
                t = *pi;
                *pi = *pj;
                *pj = t; 
            }
} 

file3中数据正确且直观可读

task4

// ´ÓÎı¾Êý¾ÝÎļþfile1.datÖжÁÈëÊý¾Ý£¬°´³É¼¨´Ó¸ßµ½µÍÅÅÐò£¬²¢½«ÅÅÐò½á¹ûÊä³öµ½ÆÁÄ»ÉÏ£¬Í¬Ê±£¬Ò²ÒÔ¶þ½øÖÆ·½Ê½´æÈëÎļþfile4.datÖС£
#include <stdio.h> 
#include <stdlib.h>

#define N 10

// ¶¨ÒåÒ»¸ö½á¹¹ÌåÀàÐÍSTU 
typedef struct student {
    int num;
    char name[20];
    int score;
}STU;

void sort(STU *pst, int n);  // º¯ÊýÉùÃ÷ 

int main() {
    FILE *fin, *fout;
    STU st[N];
    int i;
    
    // ÒÔÖ»¶ÁÎı¾·½Ê½´ò¿ªÎļþfile1.dat 
    fin = fopen("file1.dat", "r");
    if( !fin ) {  // Èç¹û´ò¿ªÊ§°Ü£¬ÔòÊä³ö´íÎóÌáʾÐÅÏ¢£¬È»ºóÍ˳ö³ÌÐò 
        printf("fail to open file1.dat\n");
        exit(0);
    }
    
    // ´ÓfinÖ¸ÏòµÄÊý¾ÝÎļþfile1.datÖжÁÈ¡Êý¾Ýµ½½á¹¹ÌåÊý×ést
    for(i=0; i<N; i++) 
        fscanf(fin, "%d %s %d", &st[i].num, st[i].name, &st[i].score);
    
    fclose(fin);  // ¹Ø±ÕfinÖ¸ÏòµÄÎļþfile1.dat
    
    // µ÷Óú¯Êýsort()¶ÔÊý×éstÖÐÊý¾Ý£¬°´·ÖÊýÓɸߵ½µÍÅÅÐò 
    sort(st, N);
    
    // ÒÔд·½Ê½´ò¿ª/´´½¨¶þ½øÖÆÎļþfile4.dat
    fout = fopen("file4.dat", "wb");
    if( !fout ) {  // Èç¹û´ò¿ªÊ§°Ü£¬ÔòÊä³ö´íÎóÌáʾÐÅÏ¢£¬È»ºóÍ˳ö³ÌÐò 
        printf("fail to open file1.dat\n");
        exit(0);
    }
    
    // ½«ÅÅÐòºóµÄÊý×éstÖÐÊý¾ÝÊä³öµ½ÆÁÄ»
    for(i=0; i<N; i++) 
        printf("%-6d%-10s%3d\n", st[i].num, st[i].name, st[i].score);
    
    // ½«ÅÅÐòºóµÄÊý×éstÖÐÊý¾Ýдµ½¶þ½øÖÆÎļþfile4.dat
    fwrite(st, sizeof(STU), N, fout);  // ½«´ÓµØÖ·st¿ªÊ¼µÄsizeof(STU)¡ÁN¸ö×Ö½ÚÐÅϢдÈëfoutÖ¸ÏòµÄÎļþfile4.datÖÐ 
        
    fclose(fout);  // ¹Ø±ÕfoutÖ¸ÏòµÄÎļþfile4.dat
    
    return 0;
}


// º¯Êý¹¦ÄÜÃèÊö£º¶ÔpstÖ¸ÏòµÄn¸öSTU½á¹¹ÌåÊý¾Ý½øÐÐÅÅÐò£¬°´³É¼¨Êý¾ÝÏîÓɸߵ½µ×ÅÅÐò 
// ÅÅÐòËã·¨£ºÑ¡ÔñÅÅÐòËã·¨ 
void sort(STU *pst, int n) {
    STU *pi, *pj, t;
    
    for(pi = pst; pi < pst+n-1; pi++)
        for(pj = pi+1; pj < pst+n; pj++) 
            if(pi->score < pj->score) {
                t = *pi;
                *pi = *pj;
                *pj = t; 
            }
} 

二进制file4中数据信息不直观可读

task5

#include <stdio.h>
#include <string.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) {
    int i;
    FILE *fin;
    fin = fopen("examinee.txt", "r");
    for(i=0; i<n; i++)
    fscanf(fin,"%ld %s %f %f",&s[i].id,s[i].name,&s[i].objective,&s[i].subjective);
}

// Êä³ö¿¼ÉúÍêÕûÐÅÏ¢: ×¼¿¼Ö¤ºÅ£¬ÐÕÃû£¬¿Í¹ÛÌâµÃ·Ö£¬²Ù×÷ÌâµÃ·Ö£¬×Ü·Ö£¬µÈ¼¶
// ²»½öÊä³öµ½ÆÁÄ»ÉÏ£¬»¹Ð´µ½Îı¾Îļþresult.txtÖÐ 
void output(STU s[], int n) {
    int i;
    printf("×¼¿¼Ö¤ºÅ   ÐÕÃû  ¿Í¹ÛÌâµÃ·Ö   ²Ù×÷ÌâµÃ·Ö   ×Ü·Ö       µÈ¼¶\n "); 
    FILE *fp;
    fp = fopen("result.txt","w");
    for (i=0;i<n;i++)
        printf("%4ld    %6s     %5.2f        %.2f     %6.2f     %4s\n\n",s[i].id,s[i].name,s[i].objective,s[i].subjective,s[i].sum,s[i].level);
   
}

// ¶Ô¿¼ÉúÐÅÏ¢½øÐд¦Àí£º¼ÆËã×Ü·Ö£¬ÅÅÐò£¬È·¶¨µÈ¼¶
void process(STU s[], int n) {
     int i,j;
    STU t;
    for(i=0;i<n;i++)
       s[i].sum=s[i].objective+s[i].subjective;
    for(i=0;i<n-1;i++){
        for(j=0;j<n-1-i;j++)
           if(s[j].sum<s[j+1].sum){
               t=s[j];
               s[j]=s[j+1];
               s[j+1]=t;
           }
    }
    for(i=0;i<n;i++){
    if(i<1)
    strcpy(s[i].level,"ÓÅÐã");
    
    else if(i>=1&&i<=5)
    strcpy(s[i].level,"ºÏ¸ñ");
    
    else
    strcpy(s[i].level,"²»ºÏ¸ñ");
    
}
} 

posted @ 2021-06-11 11:40  贺州  阅读(76)  评论(0)    收藏  举报