首尾交换数组数据
问题描述:
首尾交换数组数据,比如:arry[] = {10,20,30,40,50,60,70};变换之后:arry[] = {70,60,50,40,30,20,10}
问题求解:
#include<iostream>;
using namespace std;
int main() {
//首尾交换数组数据
//方法一
int m=0,k=0;
int arry[] = {10,20,30,40,50,60,70};
int receive[7] = {0};//定义一个“空数组”,C++中严格意义上没有空数组,当你定义一个数组时候,
//系统会自动分配一段连续的内存空间,这段内存空间原本带有的是垃圾数据。也可能没有被使用过,其内存数据值为0。
//通常情况下使用这样一个方法将内存空间的数据全部置为零:int arr[10] = { 0 };
//该语句置第一个元素为0,其余元素系统自动清为0。
for (int i = 6; i >=0; i--) {
//如果不知道数据的长度为多少,可以使用len = sizeof(arry)/sizeof(arry[0]);如下面的注释部分
receive[m] = arry[i];
m++;
}
//int len = sizeof(arry) / sizeof(arry[0]);
//cout << len-1 << endl;
//for (int i = len-1; i >= 0; i--) {
// //如果不知道数据的长度为多少,可以使用len = sizeof(arry)/sizeof(arry[0]);
// receive[m] = arry[i];
// m++;
//}
for (k; k <= 6; k++) {
cout << receive[k] << endl;
}
cout << "------------------------------------" << endl;//分割符
//方法二
int temp = 0;//作为交换的中间变量
int array1[] = { 1,2,3,4,5,6,7,8,9,10 };//原来的数组
int array2[10] = {};//逆序后的接收数组
int len = sizeof(array1) / sizeof(array1[0]);
int j = len-1;
for (int a = 0; a <= len-1; a++) {
array2[j] = array1[a];
j--;
}
for (int z=0; z <= 9; z++) {
cout << array2[z] << endl;
}
system("pause");
return 0;
}
问题总结:
看一下官方求解:
#include<iostream>;
using namespace std;
int main() {
int array_one[6] = { 1,2,8,9,4,6};
int satrt = 0;
int len=sizeof(array_one) / sizeof(array_one[0]);
int end_wei = len-1;//end好像是关键字
//cout << end_wei << endl;
for (int i = 0; i <= len-1; i++) {
int temp = array_one[satrt];
array_one[satrt] = array_one[end_wei];
array_one[end_wei] = temp;
satrt++;
end_wei--;
if (satrt == end_wei) {
break;
}
}
for (int k = 0; k <= len - 1; k++) {
cout << array_one[k] << endl;
}
system("pause");
return 0;
}