本帖最后由 Gin_Q 于 2020-2-26 09:56 编辑
| | | | | | | | | #include <time.h> | | #include <stdio.h> | | #include <string.h> | | #include <stdlib.h> | | #define LINE_SIZE 100 | | | | | | FILE *fp(char *,const char *); | | int check_width(FILE *fp); | | int check_high(FILE *fp); | | | | int main(int argc,char *argv[]) | | { | | clock_t start_t,end_t; | | double time_sum; | | start_t=clock(); | | | | FILE *a_txt=fp(argv[1],"r"); | | FILE *b_txt=fp(argv[2],"w"); | | | | int width=0,high=0; | | width=check_width(a_txt); | | high=check_high(a_txt); | | | | void anay(char *,char *,int linesize,int width); | | void init(char *,int *,int linesize,int width); | | void sort_min_max(int *p,int high,int width,int n); | | void sort_max_min(int *p,int high,int width,int n); | | void res_print(FILE *fp,int *p,int high,int width,char *p_kemu,char *kemu,char *way,char *form,char *form_1,char *form_2); | | | | char mu[LINE_SIZE]="0"; | | char temp_1[high][width]={"0"}; | | char temp[LINE_SIZE]="0"; | | int arr[high][width]={0}; | | int (*p_arr)[width]=arr; | | char kemu[5][7]={"0"}; | | char *p_kemu=kemu[0]; | | | | char original[40]="原数据"; | | char min_m[7]="小到大"; | | char max_m[7]="大到小"; | | char form[8]="+-----+"; | | char form_1[8]="-----+"; | | char form_2[2]="|"; | | char spk[2]="\0"; | | | | rewind(a_txt); | | fgets(mu,LINE_SIZE,a_txt); | | anay(mu,(char*)kemu,7,width); | | | | int i; | | for (i=0;fgets(temp,LINE_SIZE,a_txt)!=NULL;i++) | | { | | anay(temp,temp_1[0],width,width); | | init(temp_1[0],arr[i],width,width); | | } | | | | res_print(b_txt,(int *)arr,high,width,p_kemu,spk,original,form,form_1,form_2); | | fputc('\n',b_txt); | | | | int mark=0; | | | | for (i=0;i<width;i++) | | { | | if (mark==0) | | { | | sort_min_max((int *)arr,high,width,i); | | mark=1; | | res_print(b_txt,(int *)arr,high,width,p_kemu,kemu[i],min_m,form,form_1,form_2); | | } | | else if (mark==1) | | { | | sort_max_min((int *)arr,high,width,i); | | mark=0; | | res_print(b_txt,(int *)arr,high,width,p_kemu,kemu[i],max_m,form,form_1,form_2); | | } | | if (i<(high-1)) fputs("\n",b_txt); | | } | | end_t=clock(); | | time_sum=(double)(end_t-start_t)/CLOCKS_PER_SEC; | | fprintf(b_txt,"程序耗时:%f",time_sum); | | fclose(a_txt); | | fclose(b_txt); | | return 0; | | | | | | } | | FILE *fp(char *p,const char *mode) | | { | | FILE *pp; | | if ((pp= fopen(p,mode))==NULL) | | { | | printf("open fail! %s",p); | | getchar(); | | exit (0); | | } | | return pp; | | } | | | | int check_width(FILE *fp) | | { | | rewind(fp); | | char delims='0'; | | int w=1; | | for (;(delims=fgetc(fp))!='\n';) | | { | | if (delims==' ') w++; | | } | | return w; | | } | | int check_high(FILE *fp) | | { | | rewind(fp); | | int h=0; | | char arr[LINE_SIZE]; | | for (;fgets(arr,LINE_SIZE,fp)!=NULL;h++); | | return h-1; | | } | | void anay(char *p,char *t,int linesize, int width) | | { | | int i,j=0,k=0; | | for (i=0;*(p+i)!='\0';i++) | | { | | if (*(p+i)!=' ' && *(p+i)!='\n') | | { | | *(t+j*linesize+k)=*(p+i); | | k++; | | } | | else | | { | | *(t+j*linesize+k)='\0'; | | j++,k=0; | | } | | } | | } | | void init(char *p,int *p1,int linesize,int width) | | { | | int i; | | for (i=0;i<width;i++) | | { | | *(p1+i)=atoi(p+i*linesize); | | } | | } | | void sort_min_max(int *p,int high,int width,int n) | | { | | int i,k,l,temp=0; | | for (i=0;i<high-1;i++) | | { | | for (k=i+1;k<high;k++) | | { | | if (*(p+k*width+n)<*(p+i*width+n)) | | { | | for (l=0;l<width;l++) | | { | | temp=*(p+k*width+l); | | *(p+k*width+l)=*(p+i*width+l); | | *(p+i*width+l)=temp; | | } | | } | | } | | } | | } | | void sort_max_min(int *p,int high,int width,int n) | | { | | int i,k,l,temp=0; | | for (i=0;i<high-1;i++) | | { | | for (k=i+1;k<high;k++) | | { | | if (*(p+k*width+n)>*(p+i*width+n)) | | { | | for (l=0;l<width;l++) | | { | | temp=*(p+k*width+l); | | *(p+k*width+l)=*(p+i*width+l); | | *(p+i*width+l)=temp; | | } | | } | | } | | } | | } | | void res_print(FILE *fp,int *p,int high,int width,char *p_kemu,char *kemu,char *way,char *form,char *form_1,char *form_2) | | { | | fprintf(fp,"%s%s%s%s%s\n",form,form_1,form_1,form_1,form_1); | | fprintf(fp,"%s%6s%-23s%s\n",form_2,way,kemu,form_2); | | fprintf(fp,"%s%s%s%s%s\n",form,form_1,form_1,form_1,form_1); | | for (int i=0;i<width;i++) fprintf(fp,"%s%-5s",form_2,(p_kemu+i*7)); | | fprintf(fp,"%s\n%s%s%s%s%s\n",form_2,form,form_1,form_1,form_1,form_1); | | int i,j; | | for (i=0;i<high;i++) | | { | | for (j=0;j<width;j++) | | { | | fprintf(fp,"%s%-5d",form_2,*(p+i*width+j)); | | } | | fprintf(fp,"%s\n",form_2); | | fprintf(fp,"%s%s%s%s%s",form,form_1,form_1,form_1,form_1); | | fputc('\n',fp); | | } | | }COPY |
结果: | +-----+-----+-----+-----+-----+ | | |原数据 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | | | +-----+-----+-----+-----+-----+ | | |小到大语文 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | | | +-----+-----+-----+-----+-----+ | | |大到小数学 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | | | +-----+-----+-----+-----+-----+ | | |小到大英语 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | | | +-----+-----+-----+-----+-----+ | | |大到小化学 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | | | +-----+-----+-----+-----+-----+ | | |小到大生物 | | | +-----+-----+-----+-----+-----+ | | |语文 |数学 |英语 |化学 |生物 | | | +-----+-----+-----+-----+-----+ | | |74 |75 |72 |61 |61 | | | +-----+-----+-----+-----+-----+ | | |62 |75 |65 |71 |63 | | | +-----+-----+-----+-----+-----+ | | |79 |77 |70 |77 |67 | | | +-----+-----+-----+-----+-----+ | | |74 |64 |74 |78 |69 | | | +-----+-----+-----+-----+-----+ | | |71 |63 |79 |60 |70 | | | +-----+-----+-----+-----+-----+ | | |64 |70 |74 |75 |72 | | | +-----+-----+-----+-----+-----+ | | |79 |64 |72 |62 |76 | | | +-----+-----+-----+-----+-----+ | | |79 |76 |62 |62 |77 | | | +-----+-----+-----+-----+-----+ | | |66 |63 |77 |75 |79 | | | +-----+-----+-----+-----+-----+ | | | | 程序耗时:0.000000COPY |
|