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

如题所述

#include<stdio.h>

void sort(int *p,int m)

{

int i;

int temp,*p1,*p2;

for(i=0;i<m/2;i++)

{

p1=p+i;

p2=p+(m-1-i);

temp=*p1;

*p1=*p2;

*p2=temp;

}

}

int main()

{

void sort(int *p,int m);

int i,n;

int *p;

int num[5];

printf("input n: 5\n");

scanf("%d",&n);

printf("please input these numbers :\n");

for(i=0;i<n;i++)

scanf("%d",&num[i]);

p=&num[0];

sort(p,n);

printf("\nNow ,the sequence is :\n");

for(i=0;i<n;i++)

printf("%d  ",num[i]);

return 0;

}

扩展资料:

数组使用规则:

1.可以只给部分元素赋初值。当{ }中值的个数少于元素个数时,只给前面部分元素赋值。例如:static int a[10]={0,1,2,3,4};表示只给a[0]~a[4]5个元素赋值,而后5个元素自动赋0值。

2.只能给元素逐个赋值,不能给数组整体赋值。例如给十个元素全部赋1值,只能写为:static int a[10]={1,1,1,1,1,1,1,1,1,1};而不能写为:static int a[10]=1;请注意:在C、C#语言中是这样,但并非在所有涉及数组的地方都这样,数据库是从1开始。

3.如不给可初始化的数组赋初值,则全部元素均为0值。

4.如给全部元素赋值,则在数组说明中, 可以不给出数组元素的个数。例如:static int a[5]={1,2,3,4,5};可写为:static int a[]={1,2,3,4,5};动态赋值可以在程序执行过程中,对数组作动态赋值。这时可用循环语句配合scanf函数逐个对数组元素赋值。

参考资料:
百度百科-数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-05-23

#include&lt;stdio.h&gt;

int main()

{

void sort(char*p,int m);

int i,n;

char*p,num[20];

printf("input n:");

scanf("%d",&n);

printf("please input these numbers:\n");

for(i=0;i&lt;n;i++)

scanf("%d",&num&lt;i&gt;);

p=&num[0];

sort(p,n);

printf("Now,the sequence is:\n");

for(i=0;i&lt;n;i++)

printf("%d",num&lt;i&gt;);

return 0;

}

void sort(char*p,int m)

{

int i;

char temp,*p1,*p2;

for(i=0;i&lt;m/2;i++)

{

p1=p+i;

p2=p+(m-1-i);

temp=*p1;

*p1=*p2;

*p2=temp;

}

}

扩展资料:

printf用法

printf()函数的调用格式为:printf("&lt;格式化字符串&gt;",&lt;参量表&gt;)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\n",a);

输出结果为a=1234。

//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)

#include&lt;stdio.h&gt;

int main()

{

int i,j;

scanf("%d%d",&i,&j);

printf("i=%d;j=%d",i,j);

本回答被网友采纳
第2个回答  2012-04-06
已通过测试,望采纳。
#include <stdio.h>
void reverse(int a[],int n)
{ int *p;
for(p=a+n-1;p>=a;p--)
printf("%4d",*p);
printf("\n");
}
main()
{ int a[20],n;
int i;
printf("Input the length of array:");
scanf("%d",&n);
printf("Input the number of array:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reverse(a,n);
}本回答被提问者采纳
第3个回答  2012-04-07
//主函数中
void sortfun(char *p);//实现逆序函数的声明!
char *p=null;
cin>>p;
sortfun(p)//实现逆序的函数!
{
int temp;//交换的临时存储空间!
int length=0;
int count=1;//控制for循环!
while(*p!='\0')
++length;
for(count=1;count<=length/2;count++)
{
temp=*p;
*p=*(p+length-count)
*(p+count-1)=temp;
}
}
大概这样就可以 你调试 试试!!
第4个回答  2012-04-06
假设你输入的数已经在数组org中
//函数输入为原数组org,结果数组result和原数组org的长度len
void reverse(int* org, int* result, int len)
{
int i;
for(i=0; i<len; i++)
result[i] = org[len-i-1];
}

如果要求结果就放在原数组中,则:
void reverse(int* org, int len)
{
int i,j,k;
k = len/2 ;
for(i=0; i<k; i++)
{
j = org[i];
org[i] = org[len-i-1];
org[len-i-1] = j;
}
}
相似回答