主题:大虾 来看看
输入n个单词,将它们(不区分大小写)顺序从小到大排列并输出:(类似英文字典排序)
我的代码是
#include<iostream>
#include<cmath>
#include<string.h>
using namespace std;
int main()
{
char a[101][100];
char b[101][100];
char (*p)[100];
p=a;
int n,i,j,k,t,m,len1,len2;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
{
k=1;
len1=strlen(a[j]);
len2=strlen(a[j+1]);
if(len1==len2)
{
for(t=0;t<len1;t++)
if(*(*(p+j)+t)!=(*(*(p+j+1)+t)+32) && *(*(p+j)+t)!=(*(*(p+j+1)+t)-32) && *(*(p+j)+t)!=*(*(p+j+1)+t))
{k=0;break;}
if(k==1)
continue;
else
if(strcmp(a[j],a[j+1])>0)
{strcpy(b[j],a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b[j]);
}
}
else
if(strcmp(a[j],a[j+1])>0)
{
strcpy(b[j],a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b[j]);
}
}
for(i=1;i<=n;i++)
cout<<a[i]<<endl;
return 0;
}
但是遇到如输入array,ARRAY,aaaaa,AAAAA就不能比较了。。。。。。。。。求解释
我的代码是
#include<iostream>
#include<cmath>
#include<string.h>
using namespace std;
int main()
{
char a[101][100];
char b[101][100];
char (*p)[100];
p=a;
int n,i,j,k,t,m,len1,len2;
cin>>n;
for(i=1;i<=n;i++)
cin>>a[i];
for(i=1;i<n;i++)
for(j=1;j<=n-i;j++)
{
k=1;
len1=strlen(a[j]);
len2=strlen(a[j+1]);
if(len1==len2)
{
for(t=0;t<len1;t++)
if(*(*(p+j)+t)!=(*(*(p+j+1)+t)+32) && *(*(p+j)+t)!=(*(*(p+j+1)+t)-32) && *(*(p+j)+t)!=*(*(p+j+1)+t))
{k=0;break;}
if(k==1)
continue;
else
if(strcmp(a[j],a[j+1])>0)
{strcpy(b[j],a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b[j]);
}
}
else
if(strcmp(a[j],a[j+1])>0)
{
strcpy(b[j],a[j]);
strcpy(a[j],a[j+1]);
strcpy(a[j+1],b[j]);
}
}
for(i=1;i<=n;i++)
cout<<a[i]<<endl;
return 0;
}
但是遇到如输入array,ARRAY,aaaaa,AAAAA就不能比较了。。。。。。。。。求解释