将n个数按输入时顺序的逆序排列输出,用函数实现。(数值或字符串逆序存放及输出)

第一种方法,代码如下:

#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
请按任意键继续. . .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值