分别实现选择排序和冒泡排序(在上上篇文章)对以下文件进行排序。
支持如下形式调用:BubbleSort.exe input.txt output.txt 0 BubbleSort.exe input.txt output.txt 1 (0:从小到大,1:从大到小)。注意中文处理(若无法处理可以只对学号排序,需要在文档中说明)1 #include2 #include 3 #include 4 5 #define N 200 6 struct student{ 7 char num[200]; 8 char name[200]; 9 float ave;10 }st[N],temp1;11 12 struct Newstudent{13 char num[200];14 char name[200];15 char row[200];16 float ave;17 }st_New[N],temp2;18 19 //void SelectionSort();20 21 22 void main(int argc,char **argv){23 FILE *fp1,*fp2;24 int i,j,sum,min;25 char str[200];26 char *input,*output,flag;27 char tempOne[200];28 char tempTwo[200];29 //char *str[N];30 31 if(argc<4){32 input="input.txt";33 output="output.txt";34 flag='0';35 }36 else{37 input=*(argv+1);38 output=*(argv+2);39 flag=**(argv+3);40 }41 42 /*读文件*/43 if((fp1=fopen("input.txt","r"))==NULL){44 printf("can not open.");45 exit(0);46 }47 sum=0;48 printf("the File '算法设计点名册' is :\n");49 50 for(i=0;(fgets(str,200,fp1))!= NULL;i++,sum++) {51 strcpy(st[i].num,strtok(str,","));52 strcpy(st[i].name,strtok(NULL,","));53 //printf("%s",st[i].num);54 //printf("%s",st[i].name);55 }56 //printf("如果希望从小到大排列请输入0,如果希望从大到小排列请输入1:\n");57 //scanf("%d",&flag);58 /*选择排序*/59 for(i=0;i<193;i++){60 min=i;61 for(j=i+1;j<194;j++)62 if(flag){63 if(strcmp(st[j].num,st[min].num)>0)64 min=j;65 }66 else{67 if(strcmp(st[j].num,st[min].num)<0)68 min=j;69 }70 strcpy(tempOne,st[i].num);71 strcpy(st[i].num,st[min].num);72 strcpy(st[min].num,tempOne);//互换值73 74 strcpy(tempTwo,st[i].name);75 strcpy(st[i].name,st[min].name);76 strcpy(st[min].name,tempTwo);//互换值77 }78 79 /*写入新文件*/80 if((fp2=fopen("output.txt","wb"))==NULL){81 printf("can not open.");82 exit(0);83 }84 for(j=0;j