输入 10个员工工号和姓名,以工号增加方式排序(姓名跟随改变),按工号查找(同时找出姓名)
代码如下:
1 # include<stdio.h> 2 # include<string.h> 3 char num[10][7]; 4 char name[10][10]; 5 char temp[10]; 6 char num1[7]; 7 int main() 8 { 9 void sort(char[][7],char[][10]); 10 void search(char[][7],char[][10],char[]); 11 for(int i=0;i<10;i++) 12 { 13 gets(num[i]); 14 gets(name[i]); 15 } 16 sort(num,name); 17 for(i=0;i<10;i++) 18 { 19 printf("%s:%s ",num[i],name[i]); 20 } 21 printf("输入要查找的工号:"); 22 gets(num1); 23 search(num,name,num1); 24 return 0; 25 } 26 27 void sort(char a[][7],char b[][10]) 28 { 29 for(int i=0;i<9;i++) 30 { 31 int sign=0; 32 for(int j=9;j>i;j--) 33 { 34 if(strcmp(a[j],a[j-1])<0) 35 { 36 sign=1; 37 strcpy(temp,a[j]); 38 strcpy(a[j],a[j-1]); 39 strcpy(a[j-1],temp); 40 strcpy(temp,b[j]); 41 strcpy(b[j],b[j-1]); 42 strcpy(b[j-1],temp); 43 } 44 } 45 if(sign==0) break; 46 } 47 } 48 void search(char a[][7],char b[][10],char c[]) 49 { 50 int f=0,r=9,mid; 51 while(f<=r) 52 { 53 mid=(f+r)/2; 54 if(strcmp(a[mid],c)==0) 55 { 56 printf("%s:%s ",a[mid],b[mid]); 57 return; 58 } 59 else if(strcmp(a[mid],c)<0) r=mid-1; 60 else f=mid+1; 61 } 62 printf("未找到 "); 63 }
运行结果: