程序如下:(xt10-3.c)
#include <stdio.h>
main()
{ int number[10];
input(number);
max_min_value(number);
output(number);
}
input(int number[10])
{ int i;
printf("Input 10 numbers: ");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
}
max_min_value(int array[10])
{ int *max,*min,*p,*array_end;
array_end=array+10;
max=min=array;
for(p=array+1;p<array_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
*p=array[0]; array[0]=*min; *min=*p;
*p=array[9];array[9]=*max;*max=*p;
return;
}
output(int array[10])
{ int *p;
printf("Now, they are: ");
for(p=array;p<=array+9;p++)
printf("%d ",*p);
}10.3 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。 这个答案有问题 怎么改才正确呢?
----------------解决方案--------------------------------------------------------
#include <stdio.h>
void max_min_value(int array[10]) { int max,min,*p,*array_end; int* pMaxTemp = NULL,*pMinTemp = NULL; array_end = array + 10; max = min = *array; for(p = array;p < array_end;p++) { if(*p > max) { max = *p; } else if(*p < min) { min = *p; } } pMaxTemp = array; array[0] = min; min = *pMaxTemp; pMinTemp = array + 9; array[9] = max; max = *pMinTemp; return; }
void input(int number[10]) { int i; printf("Input 10 numbers: "); for(i=0;i<10;i++) { scanf("%d",&number[i]); } }
void output(int array[10]) { int *p; printf("Now, they are: "); for(p=array;p<=array+9;p++) { printf("%d ",*p); } }
void main() { int number[10]; input(number); max_min_value(number); output(number); }
----------------解决方案--------------------------------------------------------