第一种方法,代码如下:
#include <stdio.h>
int reverse1(int *a,int n)
{
int i,t;
for(i=0;i<n/2;i++) //使用数组下标的方法
{
t=a[i];
a[i]=a[n-i-1];
a[n-i-1]=t;
}
}
main()
{
int a[50]={0},i,n;
printf("指定数组个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reverse1(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
第二种方法代码如下:
#include <stdio.h>
int reverse(int *a,int n)
{
int t,*end;
end=a+n-1;
while(a<end) //使用while与指针的方法
{
t=*a;
*a++=*end;
*end--=t;
}
}
main()
{
int a[50]={0},i,n;
printf("指定数组个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reverse(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
结果如下:
指定数组个数:10
5 7 8 6 9 4 3 1 2 11
11 2 1 3 4 9 6 8 7 5
请按任意键继续. . .
第三种方法:
#include <stdio.h>
int reverse(int *a,int n)
{
int i,j,t;
for(i=0,j=n-1;i<j;i++,j--) //使用for与指针的方法
{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
}
}
main()
{
int a[50]={0},i,n;
printf("指定数组个数:");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
reverse(a,n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
类似:
定义一个函数实现字符串的逆序存放,要求用指针实现。在主函数中调用函数实现字符串逆序存放。
#include<stdio.h>
void reversed(char *str)
{
char *p=str,*q=str;
int temp;
while(*q!='\0')
{
q++;
}
q--;
while(p<q)
{
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
}
main()
{
char s[50];
printf("请输入字符串:");
gets(s);
printf("排序前:%s\n",s);
reversed(s);
printf("排序后:%s\n",s);
}
结果如下:
请输入字符串:good morning
排序前:good morning
排序后:gninrom doog
请按任意键继续. . .