指针 将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函数逐个对数组元素赋值。
参考资料:
百度百科-数组
#include<stdio.h>
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<n;i++)
scanf("%d",&num<i>);
p=&num[0];
sort(p,n);
printf("Now,the sequence is:\n");
for(i=0;i<n;i++)
printf("%d",num<i>);
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;
}
}
扩展资料:
printf用法
printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。
其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。
参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。
比如:
int a=1234;
printf("a=%d\n",a);
输出结果为a=1234。
//以下程序用于获得输入值i,j并将其输出(i,j之间以逗号隔开)
#include<stdio.h>
int main()
{
int i,j;
scanf("%d%d",&i,&j);
printf("i=%d;j=%d",i,j);
#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);
}
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;
}
}
大概这样就可以 你调试 试试!!
//函数输入为原数组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;
}
}