我写的这个程序编号从小到大排列,名字也要跟着变换,为什么不对?
#include<stdio.h>#include<string.h>
void main()
{
int a[10];char str[10];
int *p1=a;char *p2=str;
int i;
void exchange(int *p1,char *p2);
printf("please enter interger number and name:");
for(i=0;i<=9;i++)
{ scanf("%d",p1++); //输入名字
}
for(i=0;i<=9;i++)
{ scanf("%s",p2++); //输入学号
if(*(a+i)>*(a+i+1))
exchange(p1,p2);
}
for(p1=a;p1<=a+10;p1++)
{ printf("%d\n",*p1);
printf("%s\n",p2);
}
}
void exchange(int *p1,char *p2) //学号从小到大排列,名字跟着一起变
{ int temp;char *s;
{temp=*p1;
*p1=*(p1+1);
*(p1+1)=temp;
strcpy(s,p2);
strcpy(p2,p2+1);
strcpy(p2+1,s);
}
}