这个题目就是直接用暴力方法就可以了哦,考点就是字符串的函数和冒泡排序。
冒泡排序一定要掌握呀,同时对于字符串的函数可能会比较容易忘记,也可以回顾一下哦。特别是strcmp、strcpy、strlen这三个函数,用的比较多。
同时这个题目还有谢大最爱出的坑(我记得考程设的时候题目说样例之间输出一个换行,那么就是最后一个样例没有换行哦),这个题目是,每个样例结束后输出一行换行。最后不要忘记了一个换行哦。因此对于这种题目的细节一定要仔细读题,不过通过PE也可以判断自己大概错哪里了。
#include <stdio.h>
#include <math.h>
#include <string.h>
#define ll __int64
char s[25];
char ret[25][25];
int main(){
int t;
scanf("%d",&t);
while(t--){
scanf("%s",s);
int s1=strlen(s);
for(int i=0;i<s1;i++){
for(int j=0;j<s1;j++){
ret[i][j]=s[(j+i)%s1];
}
ret[i][s1]='\0';//结束符号
}
//可以用冒泡排序法,排个序喽
//从小到大排序
for(int i=0;i<s1-1;i++){
for(int j=0;j<s1-1-i;j++){
if(strcmp(ret[j],ret[j+1])>0){
char tmp[25];
strcpy(tmp,ret[j]);
strcpy(ret[j],ret[j+1]);
strcpy(ret[j+1],tmp);
}
}
}
//输出
for(int i=0;i<s1;i++){
if(i!=s1-1 && strcmp(ret[i],ret[i+1])) printf("%s\n",ret[i]);
if(i==s1-1) printf("%s\n",ret[i]);
}
printf("\n");
}
return 0;
}