在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救.......
1条回答 默认 最新
- lzrhh 2013-11-30 16:12关注
花了一小时弄的,,,亲测。
#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; } }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报