您已获得一个大小为 N 的数组/列表(ARR)。您需要交换数组/列表中的每对备用元素。 您不需要打印或返回任何内容,只需更改输入数组本身即可。
#include <iostream>;
using namespace std;
void printArr(int arr[], int n)
{
for (int i = 0; i < n; i++)
cout << arr[i]<<i;
}
void UpdateArr(int arr[], int n)
{
int i = 0, j = n - 1;
while (i < j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
i += 2;
j -= 2;
}
cout<<' printArr(arr[], n)';
}
int main()
{
int t;
cin>> t;
int n;
cin>> n;
int input[100];
for(int i=0; i<n; i++) {
cin >>input[i];
}
int arr[100] ;
n = sizeof(arr) / sizeof(arr[0]);
UpdateArr(arr, n);
return 0;
}
我不确定您到底期望输出是什么(请编辑它并显示预期输出),但我认为这就是您需要做的
#include <iostream>
#include <iomanip>
using namespace std;
void UpdateArray(int Arr[], size_t n) {
for (size_t i = 0; i < n / 2; i++) {
int Holder = Arr[i];
Arr[i] = Arr[~i + n];
Arr[~i + n] = Holder; } }
int main() {
int Arr[7] = { 1,2,3,4,5,6,7 };
UpdateArray(Arr, 7);
for (int i = 0; i < 7; i++) {
std::cout << Arr[i] << "\n"; }
return 0; }
size_t 就像一个 int 但它不能变成负数,但它可以取更大的正数,你可以用 int 替换它,它应该没有什么区别。
所以我们循环遍历数组的一半,用最后一项替换第一项,[~i + n]将值翻转到另一侧,所以就像数组大小为20的索引4将变成15
#include<iostream>
using namespace std;
// arrays
int even[8] = {1,2,3,4,5,6,7,8};
int odd[5] = {10,11,12,13,14};
// swapping algo which takes two parameters array and its size
void swapAlter(int arr[],int size){
for(int i=0;i<size;i+=2){
//Here checking next element is present in the array or not
if(i+1<size){
swap(arr[i], arr[i+1]);
}
}
}
// for printing array elements in cpp
// printing algo
void printArray(int arr[], int size){
for(int i=0; i<size;i++){
cout<<arr[i]<<""<<endl;
}
cout<<endl;
}
int main(){
//tested for even value array
swapAlter(even,8);
printArray(even,8);
cout<<endl;
//tested for odd value array
swapAlter(odd,5);
printArray(odd,5);
}