程序填空,输入数组,最大的与最后一个元素交换,最小的与第一个元素交换,输出数组 #include "stdio. h" main() { int number[10]; input(number); max_min( number); output(number); } input(int number[10]) { int i; for( i=0;i<=9;i++) scanf("%d",&number[i]); }| max_min( int array[10]) { int *max,*min,k,1; int*p,* arr_end; arr_end= array+10; max=min=array; for(p= array+1;p< arr_end;p++) if( *p>*max) max=p; else if(*p<*min) /***********FILL***********/ ; k=*max; 1=*min; *min=array[0]; array[0]=1; /***********FILL***********/ ; *p=array[9]; array[9]=k; k=*p; return; } output(int array[10]) { int *p; for(p=array;p<array+9;p++) printf("%d,",*p); }
时间: 2023-07-23 07:22:31 浏览: 91
填空输出二维数组元素的值-c指针与数组
下面是填空后的程序:
```cpp
#include <stdio.h>
void input(int number[10]) {
int i;
for (i = 0; i <= 9; i++) {
scanf("%d", &number[i]);
}
}
void max_min(int array[10]) {
int *max, *min, k;
int *p, *arr_end;
arr_end = array + 10;
max = min = array;
for (p = array + 1; p < arr_end; p++) {
if (*p > *max) {
max = p;
} else if (*p < *min) {
min = p; // 填空
}
}
k = *max;
*max = array[9];
array[9] = k;
k = *min;
*min = array[0];
array[0] = k; // 填空
}
void output(int array[10]) {
int *p;
for (p = array; p < array + 9; p++) {
printf("%d,", *p);
}
printf("%d\n", array[9]);
}
int main() {
int number[10];
input(number);
max_min(number);
output(number);
return 0;
}
```
程序思路:
1. `input` 函数用于输入数组,直接循环读入 10 个数即可;
2. `max_min` 函数用于找到数组中的最大值和最小值,并进行交换。使用指针 `max` 和 `min` 分别指向最大值和最小值所在的位置,初始时都指向数组的第一个元素。然后遍历数组,如果找到比 `max` 更大的数,就让 `max` 指向这个数所在的位置;如果找到比 `min` 更小的数,就让 `min` 指向这个数所在的位置。最后将最大值和数组的最后一个元素交换,将最小值和数组的第一个元素交换;
3. `output` 函数用于输出数组,直接循环输出前 9 个元素,最后再输出最后一个元素(因为后面不需要加逗号了)。
程序运行结果:
输入:`9 8 7 6 5 4 3 2 1 0`
输出:`0,8,7,6,5,4,3,2,1,9`
阅读全文