水题,主要是做一些字符串的比较和相关排序,数据量不大,所以效率上应该不会有多大问题。
#include <stdio.h>
#include <string.h>
struct std {
char n1[15];
char n2[15];
char num[20];
};
int main()
{
struct std mj[20];
int i,j,k;
int n,m;
struct std c[10];
struct std mid;
scanf( "%d",&n );
while ( n!=0 ) {
for ( i=0;i<n;i++ ) {
scanf( "%s",&mj[i].n1 );
scanf( "%s",&mj[i].num );
}
m=0;
for ( i=0;i<n-1;i++ ) {
for ( j=i+1;j<n;j++ ) {
k=strcmp( mj[i].num,mj[j].num );
if ( k==0 ) {
strcpy( mj[j].n2,mj[i].n1 );
c[m]=mj[j];
m++;
}
}
}
for ( i=0;i<n/2;i++ ) {
for ( j=0;j<n/2-i-1;j++ ) {
k=strcmp( c[j].n2,c[j+1].n2 );
if ( k>0 ) {
mid=c[j];
c[j]=c[j+1];
c[j+1]=mid;
}
}
}
for ( i=0;i<n/2;i++ ) {
printf( "%s is the MaJia of %s\n",c[i].n1,c[i].n2 );
}
printf( "\n" );
scanf( "%d",&n );
}
return 0;
}