实验7
实验任务4
#include<stdio.h> #define N 1000 int main(){ FILE *fp; fp=fopen("data4.txt","r"); if(!fp){ perror(""); return 0; } int line=0,count=0; char ch[N]; while(fgets(ch,N,fp)!=NULL){ line++; } fclose(fp); fp=fopen("data4.txt","r"); if(!fp){ perror(""); return 0; } char c; while((c=fgetc(fp))!=EOF){ if(c!=' '&&c!='\n'&&c!='\t'){ count++; } } printf("行数: %d",line); printf("\n"); printf("字符总数(不计空白符):%d",count); fclose(fp); return 0; }

实验任务5
#include<stdio.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); 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; } 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 st[],int n){ int i; FILE *fin; fin=fopen("D:\\list_pass.txt","w"); if(!fin){ perror(""); return; } for(i=0;i<n;i++){ if(strcmp(st[i].result,"通过")==0){ fprintf(fin,"%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); } } fclose(fin); } int process(STU st[],int n,STU st_pass[]){ int i; int k=0; 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[k++]=st[i]; } else{ strcpy(st[i].result,"不通过"); } } return k; }


实验任务6
#include<stdio.h> #include<stdlib.h> #include<time.h> #define N 100 int main(){ FILE *fp; if((fp=fopen("list.txt","r"))==NULL){ printf("fail"); return 1; } char s[N][N]; int i=0,n; while(fgets(s[i],N,fp)!=0){ ++i; } n=i; for(i=0;i<n;i++){ fgets(s[i],N,fp); } printf("下面开始抽奖!\n"); printf("请输入抽奖人数:"); int num; scanf("%d",&num); if(num<0){ return 0; } srand(time(NULL)); int choice; int flag[N]={0}; fp=fopen("d:\\20251227.txt","w"); for(i=0;i<num;){ choice=rand()%n; if(flag[choice]==1){ continue; } flag[choice]=1; i++; printf("%s\n",s[choice]); fprintf(fp,"%s\n",s[choice]); } fclose(fp); return 0; }


浙公网安备 33010602011771号