一、两种解决方法
(1)创建两个数组a[],b[];将a数组的元素倒过来输入到b数组中;
(2)与三个杯子交换水的问题类似,设置一个变量k,进行倒水操作;
二、详细步骤和分类如下
(1)我们自己给定的数组长度和内容。
方法一:
int a[4] = { 1,2,3,4 };
int b[4];
int i,j;
for (i = 0,j=3; i < 4; i++,j--){
b[j] = a[i];
}
for (j= 0; j< 4; j++)
cout << b[j];
return 0;
方法二:
int a[10] = { 1,2,3,4,5,6,7,8,9,10 };
int i, j, k;
for (i = 0, j = 9; i <= 4; i++, j--)
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
for (i = 0; i <= 9; i++)
cout << a[i] << " ";
(2)静态数组:我们确定了数组长度,数组中的元素由用户输入
方法二:
int a[100];
int i, j, k, n;
cin >> n;
for (i = 0; i <=n - 1; i++)
cin >> a[i];
for (i = 0, j = n - 1; i <= n/2-1; i++, j--)
{
k = a[i];
a[i] = a[j];
a[j] = k;
}
for (i = 0; i <= n-1; i++)
cout << a[i];
(3)动态数组:数组的元素个数和元素都由用户指定
方法二:
int i, j,k,n;
cin >> n;
int* a= new int[n];
for (i = 0; i <= n - 1; i++)
cin >> a[i];
for (i = 0, j = n - 1; i <= n / 2 - 1; i++, j--) {
k = a[i];
a[i] = a[j];
a[j] = k;
}
for (i = 0; i <= n - 1; i++)
cout << a[i];
(4)指针表示
方法二:
int* a, * p, * q, n, k;
cin >> n;
a = new int[n];
for (p = a; p <=a+ n - 1; p++)
cin >> *p;
for (p = a, q = a + n - 1; p <= a + (n / 2 - 1); p++, q--)
{
k = *q;
*q = *p;
*p = k;
}
for (p = a; p <= a + n - 1; p++)
cout << *p << " ";
需要注意的是,p=a;p<=a+n-1和p=0;p<=n-1是不同的,后者编译无法通过,我们需要注意int*和int类型是不同的,不能互相赋值。