C语言 从键盘输入10个整形数据,并存入数组,要求将10个数中最大的数与第一个数交换,将其中最小的数与最后一个交换
时间: 2024-09-11 10:02:14 浏览: 53
在C语言中,你可以通过以下几个步骤完成这个任务:
1. **声明并初始化数组**:
首先,你需要定义一个可以存储10个整数的动态数组,因为C语言中数组大小需要在声明时确定,所以我们通常使用`malloc`分配内存:
```c
int *numbers = malloc(10 * sizeof(int));
```
2. **读取用户输入**:
使用`scanf`函数从键盘获取10个整数并存储到数组中:
```c
for (int i = 0; i < 10; i++) {
scanf("%d", &numbers[i]);
}
```
3. **找出最大值和最小值**:
可以使用两个变量分别存储当前找到的最大值和最小值,遍历数组更新这两个变量:
```c
int max_value = numbers[0];
int min_value = numbers[0];
for (int i = 1; i < 10; i++) {
if (numbers[i] > max_value) {
max_value = numbers[i];
}
if (numbers[i] < min_value) {
min_value = numbers[i];
}
}
```
4. **交换元素**:
最后,找到最大值和最小值后,分别与第一个和最后一个元素交换位置:
```c
// 交换最大值和第一个元素
int temp = numbers[0];
numbers[0] = max_value;
max_value = temp;
// 交换最小值和最后一个元素
temp = numbers[9];
numbers[9] = min_value;
min_value = temp;
```
5. **释放内存**:
当不再需要数组时,别忘了释放之前分配的内存:
```c
free(numbers);
```
完整代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *numbers = malloc(10 * sizeof(int));
// 读取输入
for (int i = 0; i < 10; i++) {
scanf("%d", &numbers[i]);
}
// 找出最大值和最小值
int max_value = numbers[0];
int min_value = numbers[0];
for (int i = 1; i < 10; i++) {
if (numbers[i] > max_value) {
max_value = numbers[i];
}
if (numbers[i] < min_value) {
min_value = numbers[i];
}
}
// 交换元素
int temp = numbers[0];
numbers[0] = max_value;
max_value = temp;
temp = numbers[9];
numbers[9] = min_value;
min_value = temp;
// 输出结果(这里省略,可根据需要)
free(numbers); // 释放内存
return 0;
}
```
阅读全文