反序指定数组(数组的逆序输出) c语言 简单易懂~~

#include<stdio.h>//标准的输入输出流
#include<stdlib.h>//system("pause")要用
void fun(int a[], int m, int n);
int main(void)
{
	int a[10], m, n;
	printf("请输入十个整数:\n");
	for (int i = 0; i < 10; i++)
	{
		scanf_s("%d", &a[i]);//将你输入的十个数字读入缓存中
	}
	printf("请输入从哪个数字到哪个数字逆序:\n");
	scanf_s("%d%d", &m, &n);
	fun(a, m, n);//调用函数,可以反序执行数组的操作
	for (int i = 0; i < 10; i++)
	{
		printf("%d\t", a[i]);//这个时候已经调用函数完了,然后可以利用for循环遍历输出数组a的元素; 
	}
	//	system("pause");将黑色窗口停留,用户按任意键后才会退出
//	return 0;//程序正常运行要返回一个0
}
void fun(int a[], int m, int n)
{
	int t = 0;
	int* i, * j;//因为指针所指向的变量是int类型的 ,
	//所以我们因该用同类型的指针指向该变量
	i = a + m - 1;//为什么是a+m-1,因为数组是从0开始的
	j = a + m - 1 + n - 1;//为什么最后加的是n-1,
	//因为最后一个数组元素的下标两个数组下表相减再减1
	while (i < j)//因为数组在内存当中的空间是连续的,所以可以利用i的地址小于j的地址来作为循环结束的条件
	{
		t = *i;//t作为临时变量
		*i = *j;
		*j = t;
		i++;//每执行一次i都要++
	    j--;//每执行一次j都要--
		//否则会成为死循环
	}
	
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值