把一个数组中的各个数据元素前后交换称为数组逆序,即把第1个与最后1个交换,第2个与倒数第2个交换,...请编写函数模板实现该功能,不论数组中的数组元素是什么类型,并用主函数测试其正确性。.
时间: 2024-04-30 07:18:14 浏览: 44
下面是一个实现该功能的函数模板:
```cpp
template<typename T, size_t N>
void reverseArray(T (&arr)[N]) {
for (size_t i = 0; i < N / 2; i++) {
std::swap(arr[i], arr[N - i - 1]);
}
}
```
该函数模板接受一个大小为N的数组引用,并使用模板参数T来表示数组元素的类型。函数内部使用了一个循环来遍历数组,将第i个元素和第N-i-1个元素进行交换,实现数组逆序。最后,我们可以编写一个简单的测试函数来测试该函数的正确性:
```cpp
int main() {
int arr[] = {1, 2, 3, 4, 5};
reverseArray(arr);
for (int i = 0; i < 5; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
5 4 3 2 1
```
可以看到,该函数成功地将数组逆序。同样地,该函数模板也可以用于其他类型的数组,例如浮点数、字符等。
相关问题
从键盘输入5个整型数,保存到的长度为5的数组,再将其按逆序存放在这个数组中(第1个与最后一个交换,第2个与倒数第2个交换...),将逆序前和逆序后的数组输出。
以下是一个示例代码:
```python
# 从键盘输入5个整型数
nums = []
for i in range(5):
num = int(input('请输入第{}个整数:'.format(i+1)))
nums.append(num)
# 输出逆序前的数组
print('逆序前的数组为:', nums)
# 将数组按逆序存放
for i in range(len(nums)//2):
nums[i], nums[-i-1] = nums[-i-1], nums[i]
# 输出逆序后的数组
print('逆序后的数组为:', nums)
```
运行示例:
```
请输入第1个整数:1
请输入第2个整数:2
请输入第3个整数:3
请输入第4个整数:4
请输入第5个整数:5
逆序前的数组为: [1, 2, 3, 4, 5]
逆序后的数组为: [5, 4, 3, 2, 1]
```
C语言从键盘输入5个整型数,保存到的长度为5的数组,再将其按逆序存放在这个数组中(第1个与最后一个交换,第2个与倒数第2个交换...),将逆序前和逆序后的数组输出。
下面是使用 C 语言实现题目要求的代码:
```c
#include <stdio.h>
#define SIZE 5
int main() {
int arr[SIZE], i, temp;
// 输入5个整型数
printf("请输入5个整数:\n");
for (i = 0; i < SIZE; i++) {
scanf("%d", &arr[i]);
}
// 输出逆序前的数组
printf("逆序前的数组:\n");
for (i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
// 将数组按逆序存放
for (i = 0; i < SIZE / 2; i++) {
temp = arr[i];
arr[i] = arr[SIZE - i - 1];
arr[SIZE - i - 1] = temp;
}
// 输出逆序后的数组
printf("逆序后的数组:\n");
for (i = 0; i < SIZE; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
运行程序后,可以看到如下输出:
```
请输入5个整数:
1 2 3 4 5
逆序前的数组:
1 2 3 4 5
逆序后的数组:
5 4 3 2 1
```
这个程序首先通过 for 循环从键盘输入 5 个整型数并保存到长度为 5 的数组中,然后通过另一个 for 循环输出逆序前的数组。接着,再通过 for 循环将数组按逆序存放,最后再通过 for 循环输出逆序后的数组。
阅读全文