输入10个整数,将其中最小的数与第一个数对换,把最大的的数与最后一个数对换。写三个函数,1.输入10个数,2.进行处理.3.输出10个数。
我们使用两个指针*max,*min都指向数组的第一个元素,然后循环拿数组中的元素和两个指针所指的值进行比较,如果比min指针的数小,则将min指针指向这个地址;如果这个数比max指针所指的数大,则将max指针指向这个地址。然后对最大数,最小数进行交换操作。代码如下:
#include <stdio.h> #define N 10 void input_data(int * ,int); void operate_data(int *,int); void output_data(int * ,int); int main(int argc, char *argv[]) { int i,arr[N]; int *p =arr; printf("please input 10 number\n"); input_data(p,N); printf("the source number is:\n"); p = arr; output_data(p,N); p = arr; operate_data(p,N); printf("the result is :\n"); output_data(p,N); system("pause"); return 0; }
void input_data(int *arr , int n) { int i; for (i = 0 ; i < n ; i++) { scanf("%d" , arr++); } }
void operate_data(int *arr , int n) { int *max,*min,*p; int temp; max = arr; min = arr; for (p = arr + 1 ; p < arr + n ; p++) { if (*p > *max) { max = p; } if (*p < *min) { min = p; } } //begin swap min value.
p = arr; temp = *p; *p = *min; *min = temp; //begin swap max value.
p = arr + n - 1; temp = *p; *p = *max; *max = temp; }
void output_data(int *arr , int n) { int i; for (i = 0 ; i < n ; i++) { printf("%d ",*arr++); } printf("\n"); }
|
阅读(1040) | 评论(0) | 转发(1) |