Chinaunix首页 | 论坛 | 博客
  • 博客访问: 344464
  • 博文数量: 213
  • 博客积分: 566
  • 博客等级: 中士
  • 技术积分: 1210
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-21 13:09
文章分类

全部博文(213)

文章存档

2015年(1)

2013年(7)

2012年(128)

2011年(77)

分类:

2011-03-25 17:02:23

    输入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");
}


阅读(712) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~