题解 | #查找兄弟单词#
查找兄弟单词
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; }