以前地ACM同胞现全有自己地事去了,继续搞ACM的现当然几乎成领军人物了,只有我这烂人还在这准备考研地说,正经程序就再没写几个,方便背单词的小程序倒自己写了N(N>10)个……哈哈,都笑我没品位呀……,其实都是些自己实用的程序,这个逆序程序好像还比较有用的……,背单词换个口味呢……
#include <iostream>
#include <string.h>
using namespace std;
const int N=8000; //偶最多也只背这么多个
int cmp(char *a,char *b)
{
char ta,tb;
int la=0,lb=0;
while(a[la]!='\0' && a[la]!=9 && a[la]!=' ' && a[la]!=','
&& a[la]!='(' && a[la]!= '[' && a[la]!='/' && a[la]!='.')
la++;
while(b[lb]!='\0' && b[lb]!=9 && b[lb]!= ' ' && b[lb]!=','
&& b[lb]!='(' && b[lb]!= '[' && b[lb]!='/' && b[lb]!='.')
lb++;
la--;
lb--;
while(la!=-1 || lb !=-1)
{
if(a[la]>='A' && a[la]<='Z')
ta=a[la]+32;
else ta=a[la];
if(b[lb]>='A' && b[lb]<='Z')
tb=b[lb]+32;
else tb=b[lb];
if(ta>tb)
return 1;
else if(ta<tb)
return -1;
else
{
la--;
lb--;
}
}
}
int main()
{
FILE *fp;
int i,j,p=0,min;
char ch[N][100]={0};
char tmp[100];
if((fp=fopen("in.csv","r"))==NULL)
{
cout << "read error" <<endl;
return 1;
}
while(!feof(fp))
{
i=0;
while( !feof(fp)
&& (ch[p][i++]=fgetc(fp))!='\n');
ch[p][i-1]='\0';
p++;
}
p--;
for (i=0;i<p;i++)
{
min = i;
for (j=i+1;j<p;j++)
{
if(cmp(ch[j],ch[min])<0)
min=j;
}
if(min != i)
{
strcpy(tmp,ch[min]);
strcpy(ch[min],ch[i]);
strcpy(ch[i],tmp);
}
}
fclose(fp);
fp=fopen("out.csv","w+");
for (i=0;i<p;i++)
{
fprintf(fp,"%s\n",ch[i]);
}
fclose(fp);
}
评论