实验7

实验4:

源码:

#include<stdio.h>
#include<stdlib.h>
#define N 3
#define M 100

void write();
int fun1();
int fun2();

int main(){
    write();
    printf("data4.txt统计结果:\n");
    printf("行数:%-20d\n",fun1());
    printf("字符数(不计空白符):%-20d\n",fun2());
    system("pause");
    return 0;
}

void write(){
    int i;
    FILE *fp;
    char x[][M]={{"0123456789-0123456789"},
                 {"nuist2025"},
                 {"cosmos galaxy"}};
    if((fp=fopen("data4.txt","w"))==NULL){
        printf("fail to open file to write\n");
        return;
    }
    for(i=0;i<N;i++){
        fputs(&x[i],fp);
        if(i==2)
            break;
        fputs("\n",fp);
    }
    fclose(fp);
}

int fun1(){
    int count=0;
    char ch;
    FILE *fp;
    if((fp=fopen("data4.txt","r"))==NULL){
        printf("fail to open file to read\n");
        return;
    }

    while(!feof(fp)){
        ch=fgetc(fp);
        if(ch==EOF)
            break;
        if(ch=='\n')
            count++;
    }
    fclose(fp);
    return count+1;
}

int fun2(){
    int count=0;
    char ch;
    FILE *fp;
    if((fp=fopen("data4.txt","r"))==NULL){
        printf("fail to open file to read\n");
        return;
    }
    while(!feof(fp)){
        ch =fgetc(fp);
        if(ch==EOF)
            break;
        if(ch!=' '&&ch!='\n'&&ch!='\t')
            count++;
    }
    fclose(fp);
    return count;
}

截图:

实验5:

源码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10

typedef struct{
    long id;
    char name[20];
    float objective;
    float subjective;
    float sum;
    char result[10];
}STU;

void read(STU st[],int n);
void write(STU st[],int n);
void output(STU st[],int n);
int process(STU st[],int n,STU st_pass[]);

int main(){
    STU stu[N],stu_pass[N];
    int cnt;
    double pass_rate;

    printf("从文件读入%d个考生信息...\n", N);
    read(stu,N);

    printf("\n对考生成绩进行统计...\n");
    cnt=process(stu,N,stu_pass);

    printf("\n通过考试的名单:\n");
    output(stu,N);
    write(stu,N);

    pass_rate=1.0*cnt/N;
    printf("\n本次等级考试通过率: %.2f%%\n", pass_rate*100);

    system("pause");
    return 0;
}

void output(STU st[],int n){
    int i;

    printf("准考证号\t姓名\t客观题得分\t操作题得分\t总分\t\t结果\n");
    for(i=0;i<n;i++)
        printf("%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n",st[i].id,st[i].name,
        st[i].objective,st[i].subjective,st[i].sum,st[i].result);
}

void read(STU st[],int n){
    int i;
    FILE *fin;

    fin=fopen("examinee.txt","r");
    if(!fin){
        printf("fail to open file\n");
        return;
    }

    while(!feof(fin)){
        for(i=0;i<n;i++)
            fscanf(fin,"%ld %s %f %f",&st[i].id,st[i].name,
            &st[i].objective,&st[i].subjective);
    }
    fclose(fin);
}

void write(STU s[],int n){
    FILE *fp;
    int i;
    if((fp=fopen("list_pass.txt","w"))==NULL){
        printf("fail to open file\n");
        return;
    }
    fprintf(fp,"%s\t%s\t%s\t%s\t%s\t\t%s\n","准考证号","姓名","客观题得分","操作题得分","总分","结果");
    for(i=0;i<n;i++)
        if(s[i].sum>=60)
            fprintf(fp,"%ld\t\t%s\t%.2f\t\t%.2f\t\t%.2f\t\t%s\n",s[i].id,s[i].name,
        s[i].objective,s[i].subjective,s[i].sum,s[i].result);
    fclose(fp);
}

int process(STU st[],int n,STU st_pass[]){
    int count=0,i;
    for(i=0;i<n;i++){
        st[i].sum=st[i].objective+st[i].subjective;
        if(st[i].sum>=60){
            strcpy(st[i].result,"通过");
            st_pass[count++]=st[i];
        }
        else
            strcpy(st[i].result,"不通过");
    }
    return count;
}

截图:

实验6:

源码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 #define N 80
 5 #define M 5
 6 typedef struct{
 7     long id;
 8     char name[20];
 9     char cname[20];
10     int sign;
11 }stu;
12 
13 void read(stu s[],int n);
14 void choose(stu s[],stu ss[],int n,int m);
15 void save(stu ss[],int m,char fname[]);
16 
17 int main(){
18     stu s[N],ss[M];
19     int i;
20     char fname[50];
21     for(i=0;i<N;i++)
22         s[i].sign=0;
23     printf("------------随机抽点名单-----------\n");
24     read(s,N);
25     choose(s,ss,N,M);
26     for(i=0;i<M;i++)
27         printf("%-16ld%-8s%s\n",ss[i].id,ss[i].name,ss[i].cname);
28     printf("\n------------保存到文件-----------\n");
29     printf("输入文件名:");
30     gets(fname);
31     save(ss,M,fname);
32     printf("保存成功");
33     system("pause");
34     return 0;
35 }
36 
37 void read(stu s[],int n){
38     FILE *fp;
39     int i;
40     if((fp=fopen("list.txt","r"))==NULL){
41         printf("fail to open file\n");
42         return;
43     }
44     for(i=0;i<n;i++)
45         fscanf(fp,"%ld %s %s",&s[i].id,s[i].name,s[i].cname);
46     fclose(fp);
47 }
48 
49 void choose(stu s[],stu ss[],int n,int m){
50     int i,random;
51     srand(time(NULL));
52     for(i=0;i<m;i++){
53         do{
54             random=rand()%80;
55         }while(s[random].sign==1);
56         s[random].sign=1;
57         ss[i]=s[random];
58     }
59 }
60 
61 void save(stu ss[],int m,char fname[]){
62     FILE *fp;
63     int i;
64     if((fp=fopen(fname,"w"))==NULL){
65         printf("fail to open file\n");
66         return;
67     }
68     for(i=0;i<m;i++)
69         fprintf(fp,"%-16ld%-8s%s\n",ss[i].id,ss[i].name,ss[i].cname);
70     fclose(fp);
71 }

截图:

 选做:

源码:

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 #define N 80
 5 #define M 5
 6 typedef struct{
 7     long id;
 8     char name[20];
 9     char cname[20];
10     int sign;
11 }stu;
12 
13 void read(stu s[],int n);
14 void choose(stu s[],stu ss[],int n,int m);
15 void save(stu ss[],int m,char fname[]);
16 void sort(stu ss[],int m);
17 
18 int main(){
19     stu s[N],ss[M];
20     int i;
21     char fname[50];
22     time_t curtime=time(NULL);
23     struct tm *ptm=localtime(&curtime);
24     strftime(fname,sizeof(fname),"%Y%m%d.txt",ptm);
25     for(i=0;i<N;i++)
26         s[i].sign=0;
27     printf("------------%s抽点名单-----------\n",fname);
28     read(s,N);
29     choose(s,ss,N,M);
30     sort(ss,M);
31     for(i=0;i<M;i++)
32         printf("%-16ld%-8s%s\n",ss[i].id,ss[i].name,ss[i].cname);
33     save(ss,M,fname);
34     printf("保存成功!\n");
35     system("pause");
36     return 0;
37 }
38 
39 void read(stu s[],int n){
40     FILE *fp;
41     int i;
42     if((fp=fopen("list.txt","r"))==NULL){
43         printf("fail to open file\n");
44         return;
45     }
46     for(i=0;i<n;i++)
47         fscanf(fp,"%ld %s %s",&s[i].id,s[i].name,s[i].cname);
48     fclose(fp);
49 }
50 
51 void choose(stu s[],stu ss[],int n,int m){
52     int i,random;
53     srand(time(NULL));
54     for(i=0;i<m;i++){
55         do{
56             random=rand()%80;
57         }while(s[random].sign==1);
58         s[random].sign=1;
59         ss[i]=s[random];
60     }
61 }
62 
63 void save(stu ss[],int m,char fname[]){
64     FILE *fp;
65     int i;
66     if((fp=fopen(fname,"w"))==NULL){
67         printf("fail to open file\n");
68         return;
69     }
70     for(i=0;i<m;i++)
71         fprintf(fp,"%-16ld%-8s%s\n",ss[i].id,ss[i].name,ss[i].cname);
72     fclose(fp);
73 }
74 
75 void sort(stu ss[],int m){
76     int i,j;
77     stu t;
78     for(i=0;i<m-1;i++)
79         for(j=0;j<m-i-1;j++)
80             if(ss[j].id>ss[j+1].id){
81                 t=ss[j];
82                 ss[j]=ss[j+1];
83                 ss[j+1]=t;
84             }
85 }

截图:

 

posted @ 2024-12-29 23:28  liuseki  阅读(14)  评论(0)    收藏  举报