用字母替代数字排序问题,求解惑!

图片说明
这个题目感觉就是排序问题,可是换成字母,感觉就不一样了。折磨了我好几天了,我试过所有逻辑列出来,最后失败了,求解法,思路。最好有代码。谢谢!

声明一个结构体
struct mystruct
{
int number;//数字
char name;//字母
} A,B;
main()
{
if(A.number>B.number) printf("%c>%c",A.name,B.name);
.....
}
你可以试一下。

#include<stdio.h>

int main()
{
    char a[3][3];
    int i,j;
    for(i=0;i<3;i++){
        scanf("%s",a[i]);
    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(j==i)
                continue;
            if(a[i][1]==a[j][0]){
                //3-i-j为剩下的一项,比较a[3-i-j]的第一个是字母否为 a[i]的第一个,第二个字母是否为 a[j]的第二个,同时满足则成立 
                if(a[i][0]==a[3-i-j][0] && a[j][1]==a[3-i-j][1]){
                    printf("%c<%c<%c\n",a[j][1],a[i][1],a[i][0]);
                }
                else{
                    printf("This input is not true\n");
                }   
                return 0;           
            }
        }
    }   
    return 0;   
 } 

试一下这个

#include<stdio.h>

int main()
{
    char a[3][3];
    int i,j;
    for(i=0;i<3;i++){
        scanf("%s",a[i]);
    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(j==i)
                continue;
            if(a[i][1]==a[j][0]){
                //3-i-j为剩下的一项,比较a[3-i-j]的第一个是字母否为 a[i]的第一个,第二个字母是否为 a[j]的第二个,同时满足则成立 
                if(a[i][0]==a[3-i-j][0] && a[j][1]==a[3-i-j][1]){
                    printf("%c<%c<%c\n",a[j][1],a[i][1],a[i][0]);
                    return 0;
                }   

            }
        }
    }
    printf("This input is not true\n");
    return 0;   
 } 
#include<stdio.h>

int main()
{
    char a[3][3];
    int i,j;
    for(i=0;i<3;i++){
        scanf("%s",a[i]);
    }
    for(i=0;i<3;i++){
        for(j=0;j<3;j++){
            if(j==i)
                continue;
            if(a[i][1]==a[j][0]){
                //3-i-j为剩下的一项,比较a[3-i-j]的第一个是字母否为 a[i]的第一个,第二个字母是否为 a[j]的第二个,同时满足则成立 
                if(a[i][0]==a[3-i-j][0] && a[j][1]==a[3-i-j][1]){
                    printf("%c<%c<%c\n",a[j][1],a[i][1],a[i][0]);
                    return 0;
                }   

            }
        }
    }
    printf("This input is not true\n");
    return 0;   

枚举判断呗,如此数据范围,当然枚举最保险

#include
int main(){
char s[3][2];
while(scanf("%s",s[0])!=EOF){
int ans[6] = {1,1,1,1,1,1},ok = 1,i;
for(i=1;i<3;i++){
scanf("%s",s[i]);
}
for(i=0;ok&&i<3;i++){
if(s[i][0]==s[i][1]){
ok=0;
}
else if(s[i][0]=='A'){
if(s[i][1]=='B'){
ans[2]=0,ans[3]=0,ans[5]=0;
}
else{
ans[3]=0,ans[4]=0,ans[5]=0;
}
}
else if(s[i][0]=='B'){
if(s[i][1]=='A'){
ans[0]=0,ans[1]=0,ans[4]=0;
}
else{
ans[1]=0,ans[4]=0,ans[5]=0;
}
}
else if(s[i][0]=='C'){
if(s[i][1]=='B'){
ans[0]=0,ans[2]=0,ans[3]=0;
}
else{
ans[0]=0,ans[1]=0,ans[2]=0;
}
}
}
if(ok){
int re=-1;
for(int i=0;i<6;i++){
if(ans[i]==1){
if(re==-1){
re=i;
}
else{
ok=0;
break;
}
}
}
if(ok){
if(re==0){
printf("C<B<A\n");
}
else if(re==1){
printf("B<C<A\n");
}
else if(re==2){
printf("C<A<B\n");
}
else if(re==3){
printf("A<C<B\n");
}
else if(re==4){
printf("B<A<C\n");
}
else if(re==5){
printf("A<B<C\n");
}
else{
printf("The input is not true!\n");
}
}
else{
printf("The input is not true!\n");
}
}
else{
printf("The input is not true!\n");
}
}

}