数组逆序输出

# include <stdio.h>
# define MAXN 100+10 //在算法竞赛中,常常难以精确计算出需要的数组大小,数组一般会声明的稍大些。够用的前提下,浪费点不要紧。 
int a[MAXN];//声明了一个包含MAXN个整型变量的数组,即a[0],a[1],a[2],...,a[MAXN-1],但不包含a[MAXN]。MAXN必须是常数,不能是变量 
int main()
{
	int i, x, n = 0;
	while(scanf("%d",&x) == 1)//scanf函数有返回值,返回的是成功输入变量的个数 
		a[n++] = x;//首先赋值a[n]=x;然后执行n++。循环结束后,数据被存在了a[0],a[1],...,a[n-1],其中变量n是整数的个数 
	for(i=n-1; i>=1; i--)
		printf("%d ",a[i]);
	printf("%d\n",a[0]);
	return 0;
} 

在C语言中,实现数组逆序输出有多种方法,以下为你介绍几种常见的实现方式: ### 方法一:使用简单的循环逆序输出 此方法先按顺序定义数组,再通过循环从数组末尾开始向前遍历,逐个输出元素。 ```c #include <stdio.h> int main() { int i = 0; // 定义数组 int arr[] = {0,1,2,3,4,5,6,7,8,9}; // 逆序输出 for(i = 9; i >= 0; i--) { printf("arr[%d]=%d\n", i, arr[i]); } return 0; } ``` 这种方法的思路是直接从数组的最后一个元素开始,依次向前输出每个元素,直到第一个元素。 ### 方法二:通过函数实现数组逆序输出 此方法将数组逆序的逻辑封装在函数中,在`main`函数中调用该函数。 ```c #include <stdio.h> void order(int arr[], int x) { for (int i = 0; i < x; i++) { for (int j = i + 1; j < x; j++) { if (arr[i] <= arr[j]) { int k = arr[i]; arr[i] = arr[j]; arr[j] = k; } } } for (int i = 0; i < x; i++) { printf("%d ", arr[i]); } } int main() { int x = 0; scanf("%d", &x); int arrs[1000]; for (int i = 0; i < x; i++) { scanf("%d", &arrs[i]); } order(arrs, x); return 0; } ``` 这里在`order`函数中,通过两层循环对数组元素进行比较和交换,实现逆序排序后输出。 ### 方法三:交换数组元素实现逆序 此方法通过交换数组的首尾元素,逐步向中间靠拢,实现数组逆序。 ```c #include <stdio.h> #include <string.h> #define Max 200 void reserve(char *s, int s_size) { char temp; for(int i = 0, j = s_size; i <= j; i++, j--) { temp = s[i]; s[i] = s[j]; s[j] = temp; } } int main() { char s[Max]; while(gets(s)) { int len = strlen(s); reserve(s, len - 1); puts(s); } return 0; } ``` 在`reserve`函数中,使用`temp`变量暂存元素,将数组首尾元素交换,直到遍历到数组中间位置。 ### 方法四:用户输入数组逆序输出 此方法允许用户输入数组的长度和元素,然后将数组逆序输出。 ```c #include "stdio.h" int main() { int arr[100]; int num; printf("请输入数组长度:"); scanf("%d", &num); printf("请输入数组:"); for(int i = 0; i < num; i++) { scanf("%d", &arr[i]); } for(int k = 0; k < num / 2; k++) { int temp = arr[k]; arr[k] = arr[num - 1 - k]; arr[num - 1 - k] = temp; } for(int i = 0; i < num; i++) printf("%d ", arr[i]); return 0; } ``` 先让用户输入数组长度和元素,接着通过交换元素的方式将数组逆序,最后输出逆序后的数组
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值