题解 | #查找兄弟单词#

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

#include <stdio.h>
#include <string.h>
struct ZD{
    char a[10],atoo[10];
    int pd;
};
//长度函数
int cd(char n[]){
    int i=0;
    while(n[i]!=0) i++;
    return i;
}
//排序函数
void px(char n[]){
    int i,j,t;
    t=cd(n);
    char k;
    for(i=0;i<t-1;i++)
    for(j=0;j<t-1-i;j++)
    if(n[j]>n[j+1]){
        k=n[j];
        n[j]=n[j+1];
        n[j+1]=k;
    }
}
int main() {
    //信息全部输入
    int n,k,i,j,num=0;
    scanf("%d",&n);
    struct ZD t[n],temp;
    for(i=0;i<n;i++){
    scanf("%s",t[i].a);
    strcpy(t[i].atoo,t[i].a);
    }
    char b[10],btoo[10];
    scanf("%s",b);
    strcpy(btoo,b);
    scanf("%d",&k);

    //判断是否为兄弟单词
    px(btoo);
    for(i=0;i<n;i++){
        px(t[i].atoo);
    }
    for(i=0;i<n;i++){
        j=0;
        if(strcmp(t[i].atoo,btoo)==0&&strcmp(t[i].a,b)!=0){
        j=1;num++;}
        t[i].pd=j;
    }
  //输出次数
    printf("%d\n",num);
  //删除非兄弟单词
    for(i=0;i<n;i++){
        if(t[i].pd==0){
        for(j=i;j<n;j++)
        t[j]=t[j+1];
        n--;i--;
    }}
  //对剩余的兄弟单词进行字典排序
    for(i=0;i<n-1;i++)
    for(j=0;j<n-1-i;j++)
    if(strcmp(t[j].a,t[j+1].a)>0){
        temp=t[j];
        t[j]=t[j+1];
        t[j+1]=temp;
    }
  //判断第K个是否存在并输出
    if(k<=n)
    printf("%s",t[k-1].a);

    return 0;
}

全部评论

相关推荐

美团 后端开发 总包n(15%是股票)
点赞 评论 收藏
分享
程序员猪皮:看不到八股什么意思
点赞 评论 收藏
分享
我已成为0offer的糕手:别惯着,胆子都是练出来的,这里认怂了,那以后被裁应届被拖工资还敢抗争?
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务