C语言,将一个数组中的值按逆序重新存放

如题所述

#include "stdio.h"
void Swap(int *a, int *b) /*交换a、b两个数*/
{
int tmp = *a;
*a = *b;
*b = tmp;
}
void Turn(int a[], int left, int right) /*对数组a从left到right区域实现逆置(翻转)*/
{
int i, j;
for(i = left, j = right; i < j; i++, j--)
Swap(&a[i], &a[j]);
}
void main( )
{
int n, i, a[100];

scanf("%d", &n); /*输入数组中数据元素的个数*/
for(i = 0; i < n; i++) /*输入数组中各个数据元素*/
scanf("%d", &a[i]);

Turn(a, 0, n - 1); /*翻转*/

for(i = 0; i < n; i++) /*输出翻转结果*/
printf("%d\t", a[i]);
}追问

程序没使用,不知能否执行

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-12-18
1、取得当前数组a的长度。
2、建立一个相同类型、相同长度的动态数组b。
3、顺序读当前数组a,把读到的数据逆序地写到数组b中。
4、将数据b中的内容复制到数据a中。

使用动态数组,适合于任何长度的数组。malloc函数。
第2个回答  2013-12-18
#include<stdio.h>
int main(void)
{
int a[10] = {0};
int b[10] = {0};
int i = 0;
printf("请输入数组a,10个元素:\n");
for(i = 0 ; i <10;i++)
scanf("%d",&a[i]);
for(i = 0 ; i <10;i++)
{
b[9-i] = a[i];
}
printf("逆序后的数组为:\n");
for(i = 0 ; i <10; i++)
printf("%5d",b[i]);
printf("\n");
return 0;
}
相似回答