问题描述】定义函数,实现输入10个数,将其中的最小数与第一个数对换,最大数与最后一个数对换 【输入形式】输入10个整数,以空格间隔 【输出形式】输出10个整数,以空格间隔 【样例输入】5 4 3 2 1 0 9 8 7 6 【样例输出】0 4 3 2 1 5 6 8 7 9 【样例说明】 【评分标准】 #include<stdio.h> void input(int *p) {int i; for(i=0;i<10;i++) scanf("%d",p++);} void maxmin(int *p请你给出剩下的代码
时间: 2024-02-28 21:56:11 浏览: 56
```c
#include<stdio.h>
void input(int *p) {
int i;
for(i = 0; i < 10; i++)
scanf("%d", p++);
}
void maxmin(int *p) {
int *max = p, *min = p, *p1 = p, *p2 = p + 9, temp;
for(; p1 <= p2; p1++, p2--){
if(*p1 > *max) max = p1;
if(*p2 < *min) min = p2;
}
temp = *p;
*p = *min;
*min = temp;
if(max == p) max = min;
temp = *(p + 9);
*(p + 9) = *max;
*max = temp;
}
void output(int *p) {
int i;
for(i = 0; i < 10; i++)
printf("%d ", *(p++));
}
int main() {
int a[10];
input(a);
maxmin(a);
output(a);
return 0;
}
```
相关问题
C语言做输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。3个指针,1个指向最小数,1个指向最大数,1个循环指向0~9号元素。 参考例8.6 1、要求编写3个子函数
好的,我理解了你的问题。下面是代码实现:
```c
#include <stdio.h>
void input(int *arr)
{
printf("请输入10个整数:\n");
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
}
void process(int *arr)
{
int *min = &arr[0];
int *max = &arr[0];
for (int i = 0; i < 10; i++) {
if (*min > arr[i]) {
min = &arr[i];
}
if (*max < arr[i]) {
max = &arr[i];
}
}
int tmp = arr[0];
arr[0] = *min;
*min = tmp;
tmp = arr[9];
arr[9] = *max;
*max = tmp;
}
void output(int *arr)
{
printf("处理后的数组为:\n");
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main()
{
int arr[10];
input(arr);
process(arr);
output(arr);
return 0;
}
```
这个程序中,我们定义了三个函数:
1. `input`:用于输入10个整数,将其存储到数组 `arr` 中。
2. `process`:用于对数组 `arr` 进行处理,找到其中最小值和最大值,并将其与第一个元素和最后一个元素进行对换。
3. `output`:用于输出处理后的数组 `arr`。
在 `process` 函数中,我们使用了三个指针:
1. `min`:指向最小值所在的元素。
2. `max`:指向最大值所在的元素。
3. 一个循环指针:用于遍历数组中的所有元素。
最后,在 `main` 函数中,我们按照顺序调用了 `input`、`process` 和 `output` 函数,将程序完整地串起来。
希望这个代码能够解决你的问题。
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)求最小数、最大数的位置;(2)进行对换处理;(3)主函数。使用C语言和指针
可以这样写:
```c
#include <stdio.h>
void find_min_max(int *arr, int len, int *min_idx, int *max_idx) {
*min_idx = *max_idx = 0;
for (int i = 1; i < len; i++) {
if (arr[i] < arr[*min_idx]) {
*min_idx = i;
}
if (arr[i] > arr[*max_idx]) {
*max_idx = i;
}
}
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int arr[10];
for (int i = 0; i < 10; i++) {
scanf("%d", &arr[i]);
}
int min_idx, max_idx;
find_min_max(arr, 10, &min_idx, &max_idx);
swap(&arr[0], &arr[min_idx]);
swap(&arr[9], &arr[max_idx]);
for (int i = 0; i < 10; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
首先定义一个数组 `arr`,然后循环输入 10 个整数。接下来定义一个函数 `find_min_max`,用来找到最小数和最大数所在的位置,并通过指针返回给主函数。主函数中调用 `find_min_max` 函数找到最小数和最大数的位置,然后交换最小数和第一个数的位置,交换最大数和最后一个数的位置。最后循环输出整个数组。其中,交换两个数的位置用到了 `swap` 函数。
阅读全文