实验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 }
截图:


浙公网安备 33010602011771号