编程实现输入8个整数存入一维数组,将其中最大数与第一个数交换,最小数与最后一个数交换(用指针完成)
时间: 2023-09-06 20:05:15 浏览: 209
将如下一个4X4矩阵存入数组中,输出数组,求出其中的最大数和最小数:.c
### 回答1:
以下是C++的代码示例,实现输入8个整数存入一维数组,将其中最大数与第一个数交换,最小数与最后一个数交换,使用指针完成:
```c++
#include <iostream>
using namespace std;
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[8];
for(int i=0; i<8; i++) {
cin >> arr[i];
}
int max = arr[0], min = arr[0];
int max_index = 0, min_index = 0;
// 找到最大值和最小值的位置
for(int i=1; i<8; i++) {
if(arr[i] > max) {
max = arr[i];
max_index = i;
}
if(arr[i] < min) {
min = arr[i];
min_index = i;
}
}
// 交换最大值和第一个数
swap(&arr[0], &arr[max_index]);
// 如果最小值是最后一个数,则不用交换
if(min_index != 7) {
// 交换最小值和最后一个数
swap(&arr[7], &arr[min_index]);
}
// 输出交换后的数组
for(int i=0; i<8; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
解释:
首先,定义一个大小为8的一维数组,用循环将8个整数存入数组中。
然后,遍历整个数组,找到其中的最大值和最小值,并记录它们的下标。这里我们用指针交换数值,定义了一个 `swap` 函数来完成。
接下来,将最大值和第一个数交换,将最小值和最后一个数交换。如果最小值刚好在最后一个数,则不用交换。
最后,输出交换后的数组。
### 回答2:
编程实现输入8个整数存入一维数组,将其中最大数与第一个数交换,最小数与最后一个数交换(用指针完成)。
```c++
#include <iostream>
using namespace std;
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[8];
cout << "请输入8个整数:" << endl;
for (int i = 0; i < 8; i++) {
cin >> arr[i];
}
int* maxPtr = &arr[0];
int* minPtr = &arr[0];
for (int i = 1; i < 8; i++) {
if (arr[i] > *maxPtr) {
maxPtr = &arr[i];
}
if (arr[i] < *minPtr) {
minPtr = &arr[i];
}
}
swap(&arr[0], maxPtr);
swap(&arr[7], minPtr);
cout << "交换后的数组为:" << endl;
for (int i = 0; i < 8; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
这段代码首先通过循环输入8个整数,并存入一维数组 `arr` 中。然后,通过指针 `maxPtr` 和 `minPtr` ,遍历数组找到最大数和最小数的位置。
在 `swap` 函数中,我们定义了一个 `temp` 变量来临时保存交换的值。通过指针交换数组中的值,即将 *a 的值赋给 temp ,将 *b 的值赋给 *a ,再将 temp 的值赋给 *b 。
最后,我们调用 `swap` 函数,将最大数和第一个数进行交换,并将最小数和最后一个数进行交换,输出交换后的数组。
### 回答3:
编程实现输入8个整数存入一维数组,将其中最大数与第一个数交换,最小数与最后一个数交换(用指针完成)的示例代码如下:
```c
#include <stdio.h>
void swap(int *x, int *y) {
int temp = *x;
*x = *y;
*y = temp;
}
int main() {
int numbers[8];
int *ptr = numbers;
printf("请输入8个整数:\n");
for (int i = 0; i < 8; i++) {
scanf("%d", ptr + i);
}
// 找到最大数和最小数的指针
int *maxPtr = ptr;
int *minPtr = ptr;
for (int i = 0; i < 8; i++) {
if (*(ptr + i) > *maxPtr)
maxPtr = ptr + i;
if (*(ptr + i) < *minPtr)
minPtr = ptr + i;
}
// 交换最大数和第一个数
swap(ptr, maxPtr);
// 交换最小数和最后一个数
swap(ptr + 7, minPtr);
printf("交换后的数组:\n");
for (int i = 0; i < 8; i++) {
printf("%d ", *(ptr + i));
}
printf("\n");
return 0;
}
```
运行代码后,会提示输入8个整数。输入完毕后,程序会找到最大数和最小数的指针,并将最大数与第一个数交换,将最小数与最后一个数交换。最后,程序会输出交换后的数组。
阅读全文