将n个数按输入时顺序的逆序排列,用函数实现。

#include<iostream>
using namespace std;
int main()
{
void sort(char *p,int m);
int n,i;
char num[20],*p;
cout<<"input n:";
cin>>n;
cout<<"please input these numbers:"<<endl;
for(i=0;i<n;i++)
cin>>num[i];
p=&num[0];
sort(p,n);
cout<<"now the sequence is:"<<endl;
for(i=0;i<n;i++)
cout<<num[i]<<" ";
cout<<endl;
return 0;
}
大家可以帮忙用通俗的语言解释一下的被调函数
【void sort(char *p,int m)
{
int i;
char temp,*p1,*p2;
for(i=0;i<m/2;i++)
{p1=p+i;
p2=p+(m-1-i);
temp=*p1;
*p1=*p2;
*p2=temp;
}
}】

第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;//
}
}本回答被提问者采纳
相似回答