c语言变位词问题请帮我

我感觉我没有找到我的错误的地方,请帮我指出一下,谢谢
题目描述
如果两个单词的组成字母完全相同,只是字母的排列顺序不一样,则它们就是变位词,两个单词相同也被认为是变位词。如tea 与eat , nic 与cin, ddc与dcd, abc与abc 等。你的任务就是判断它们是否是变位词。

输入
第一行一个N,表示下面有N行测试数据。每行测试数据包括两个单词,如tea eat ,它们之间用空格割开

输出
对于每个测试数据,如果它们是变位词,输出Yes,否则输出No.

样例输入
3
tea eat
ddc cdd
dee dde
样例输出
Yes
Yes
No

#include
#include
int main(){
    int n,i,s=0,j,k,z,l,m=0;
    char a[10005],b[10005];
    scanf("%d",&n);
    for(i=0;i"%s %s",a,b);
        k=strlen(a);
    for(j=0;jif(a[j]==b[j]) m++;
    }
    if(m==k){
    printf("NO\n");
    m=0;}
    else if(m!=k){
    for(j=0;jfor(z=j;zif(a[z]>a[j]){
                l=a[z];
                a[z]=a[j];
                a[j]=l;
            }
        }
    }
    for(j=0;jfor(z=j;zif(b[z]>b[j]){
                l=b[z];
                b[z]=b[j];
                b[j]=l;
            }
        }
    }
    for(j=0;jif(a[j]==b[j]) s++;
    }
    if(s==k) printf("YES\n");
    else if(s!=k) printf("NO\n");
    s=0;k=0;
    }}
    return 0;
}

单词相同也是变位词,第一个判断就不对
下面是我写的,仅供参考

#include<stdio.h>
#include<string.h>
int main()
{
    int n,i,m=0,j,k,z;
    char a[1005],b[1005];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s%s",a,b);
        k=strlen(a);
        for(j=0;j<k;j++)
        for(z=0;z<k;z++)
        {
            if(a[j]==b[z])
            {
                m++;
                b[z]=48;
                break;
            }
        }
        if(m==k)
        {
            printf("Yes\n");
        }
        if(m!=k)
        {
            printf("No\n");
        }
        m=0;
    }
}
}

仅供参考

#include<stdio.h>
#include <stdlib.h>
#include<string.h>
int Vieta_theorem(char a[],int result)
{
    int len = strlen(a), sum = 0, product = 1;
    while(len--){
        sum += a[len];
        product *= a[len];
    }
    if(result)
        return sum;
    else
        return product;
}
int anagram(char a[],char b[])
{
    if(strlen(a) == strlen(b)){
        if( (Vieta_theorem(a,1) == Vieta_theorem(b,1))
         && (Vieta_theorem(a,0) == Vieta_theorem(b,0)))
            return 1;
        else    
            return 0;
    }else
        return 0;    
}
int main(){
    int len, i = 0, j = 0;
    char a[10005],b[10005];
    scanf("%d",&len);
    j = len;
    int *arr = (int*)malloc(len * sizeof(int));
       while(len--){
           scanf("%s %s", a, b);
           arr[i++] = anagram(a, b);
    }
    for(i = 0;i < j; i++){
        if(arr[i]) printf("Yes\n");
        else printf("No\n");
    }
    return 0;
}