在一個數組中首先判斷裡的自符是否為回文字符,如果是在按其長度排序,若相同長度的則按ASCII碼排序(用c++)求大神解救.......
花了一小時弄的,,,親測。
#include<iostream>
using namespace std;
bool judge(char *str);
void sort(char *Selected[],int n);
int Length(char *str);
void print(char *Selected[],int n);
int main()
{
const int N=6;
char *p[N]={"f3dfg","1234321","232","sdfds","asdsa","asfxx"};
char *Selected[N];
int n=0;
int i=0;
for(i=0;i<N;i++)
{
if(judge(p[i])==false)
{
cout<<p[i]<<"不是回文字符!"<<endl;
}
else
{
cout<<p[i]<<"是回文字符!"<<endl;
Selected[n]=p[i];
n++;
}
}
sort(Selected,n);
print(Selected,n);
return 0;
}
//判斷字符串是否為回文字符函數
bool judge(char *str)
{
bool flat=true;
int acount=0;
for(int i=0;*(str+i)!='\0';i++)
{
acount++;
}
for(int i=0;i<=(acount-1)/2;i++)
{
if(*(str+i)!=*(str+(acount-1)-i))
{
flat=false;
}
}
return flat;
}
//排序函數
void sort(char *Selected[],int n)
{
char* temp;
int i,j,k;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(Length(Selected[k])>Length(Selected[j]))k=j;
if(k!=i)
{temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
}
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;Length(Selected[j-1])==Length(Selected[j]);j++)
if(strcmp(Selected[k],Selected[j]))k=j;
if(k!=i)
{temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
}
}
//計算字符串長度的函數
int Length(char *str)
{
int acount=0;
for(int i=0;*(str+i)!='\0';i++)
{
acount++;
}
return acount;
}
//輸出函數
void print(char *Selected[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<Selected[i]<<endl;
}
}