第1个回答 推荐于2016-06-22
供参考……
void sort(char *p,int m){
int i;//声明int型变量i
char temp,*p1,*p2;//声明char型变量temp和char型指针变量p1及p2
for(i=0;i<m/2;i++){ //m是数组长度,/是取整除;所以当m是奇数时,m/2是中间那一位的前一位,
//当m是偶数时,m/2是前一半的最后一位;for(i=0;i<m/2;i++)是从第一位
//开始逐个循环到m/2的前一位(即所有数的前一半)
p1=p+i;//p是数组第0位,在循环中p1=p+i将使p1依次指向p[0],p[1],p[2]...p[m/2-1]
p2=p+(m-1-i); //同上理,p2=p+(m-1-i)将使p2依次指向数组的倒数第1位,倒数第2位,倒数第3位...
//直到以数组中间为界与p[m/2-1]相对的那一位
temp=*p1;//以下三句是将p1和p2指向的内容交换,实际上就是将数组的p[0]与p[m-1]交换,p[1]与
//p[m-2]交换,p[2]与p[m-3]交换...这就达到了倒序目的……
*p1=*p2;//
*p2=temp;//
}
}本回答被提问者采纳
第2个回答 推荐于2016-06-22
供参考……
void sort(char *p,int m){
int i;//声明int型变量i
char temp,*p1,*p2;//声明char型变量temp和char型指针变量p1及p2
for(i=0;i<m/2;i++){ //m是数组长度,/是取整除;所以当m是奇数时,m/2是中间那一位的前一位,
//当m是偶数时,m/2是前一半的最后一位;for(i=0;i<m/2;i++)是从第一位
//开始逐个循环到m/2的前一位(即所有数的前一半)
p1=p+i;//p是数组第0位,在循环中p1=p+i将使p1依次指向p[0],p[1],p[2]...p[m/2-1]
p2=p+(m-1-i); //同上理,p2=p+(m-1-i)将使p2依次指向数组的倒数第1位,倒数第2位,倒数第3位...
//直到以数组中间为界与p[m/2-1]相对的那一位
temp=*p1;//以下三句是将p1和p2指向的内容交换,实际上就是将数组的p[0]与p[m-1]交换,p[1]与
//p[m-2]交换,p[2]与p[m-3]交换...这就达到了倒序目的……
*p1=*p2;//
*p2=temp;//
}
}本回答被提问者采纳