编写主函数,通过调用函数swap,实现一个长度为n的整形一维数组逆序存放,n和数组元素由键盘输入
时间: 2024-02-09 16:11:15 浏览: 94
好的,以下是一个实现这个功能的主函数:
```c
#include <stdio.h>
void swap(int *a, int *b);
int main() {
int n;
printf("请输入数组长度n:");
scanf("%d", &n);
int arr[n];
printf("请输入%d个整数作为数组元素:", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
for (int i = 0; i < n / 2; i++) {
swap(&arr[i], &arr[n - 1 - i]);
}
printf("逆序存放后的数组为:");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
这个程序中,我们首先通过键盘输入获取数组长度n和数组元素,然后使用swap函数将数组逆序存放,最后输出逆序存放后的数组。注意,在swap函数中,我们使用指针来交换数组元素的值,以实现对数组的修改。
相关问题
按如下函数原型,用指针做函数参数,编程实现两个元素值的交换。 void Swap(int *x, int *y); 在主函数中输入数组元素的个数n,然后分别调用函数ReadData()输入数组a和数组b的元素值,在循环语句中调用函数Swap()交换数组a和数组b的对应元素的值,最后在主函数中分别调用函数PrintData()输出数组a和数组b的元素值。 **输入提示信息: "Input array size(n<=10):" "Input array a:" "Input array b:" **输入格式:"%d" **输出提示信息: "Output array a:" "Output array b:" **输出格式:"%5d" 请按如下框架编程: #include <stdio.h> #define N 10 void ReadData(int a[], int n); void PrintData(int a[], int n); void Swap(int *x, int *y); main() { int a[N], b[N], i, n; } /* 函数功能:输入数组a的n个元素值 */ void ReadData(int a[], int n) { } /* 函数功能:输出数组a的n个元素值 */ void PrintData(int a[], int n) { } /* 函数功能:两整数值互换 */ void Swap(int *x, int *y) { }
代码实现如下:
```
#include <stdio.h>
#define N 10
void ReadData(int a[], int n);
void PrintData(int a[], int n);
void Swap(int *x, int *y);
int main() {
int a[N], b[N], i, n;
printf("Input array size(n<=10):");
scanf("%d", &n);
printf("Input array a:");
ReadData(a, n); // 输入数组a的元素值
printf("Input array b:");
ReadData(b, n); // 输入数组b的元素值
// 循环语句中调用Swap()函数交换数组a和数组b的对应元素的值
for (i = 0; i < n; i++) {
Swap(&a[i], &b[i]);
}
printf("Output array a:");
PrintData(a, n); // 输出数组a的元素值
printf("Output array b:");
PrintData(b, n); // 输出数组b的元素值
return 0;
}
/* 函数功能:输入数组a的n个元素值 */
void ReadData(int a[], int n) {
int i;
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
}
/* 函数功能:输出数组a的n个元素值 */
void PrintData(int a[], int n) {
int i;
for (i = 0; i < n; i++) {
printf("%5d", a[i]);
}
printf("\n");
}
/* 函数功能:两整数值互换 */
void Swap(int *x, int *y) {
int temp;
temp = *x;
*x = *y;
*y = temp;
}
```
程序运行示例:
```
Input array size(n<=10):3
Input array a:1 2 3
Input array b:4 5 6
Output array a: 4 5 6
Output array b: 1 2 3
```
设计一个函数模板,将一维数组 逆序
好的,下面是一个将一维数组逆序的函数模板:
```c++
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]);
}
}
```
这个函数模板接受一个一维数组的引用作为参数,使用 `std::swap` 函数将数组中的元素逆序排列。由于数组的大小是在编译时就确定的,因此我们可以使用模板的非类型参数 `N` 表示数组的大小。
阅读全文