用指针和数组的形式去交换数组中的数据

题目

题目描述:

输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数交换。

程序运行结果范例(蓝色字体表示输入):

请输入10个整数:2  3  4  23  5  78  0  1  6  12

交换后的结果为:0  3  4  23  5  12  2  1  6  78

请输入10个整数:1  25  7  40  5  6  12  8  30  19

交换后的结果为:1  25  7  19  5  6  12  8  30  40

提示:

要求用数组及数组传参方式实现上述程序。

要求写3个函数:(1)输入10个数;(2)进行处理;(3)输出10个数。

这个程序有多种实现思路,尝试使用数组和指针两种方法实现。

数组的形式

#include
void getnum(int a[],int n)
{
    int i;

    printf("你要输入的数据个数是%d:\n",n);
    for(i=0;imaxnum)
        {
            maxnum=arr[i];
            max=i;
        }
        if(arr[i]

指针方法

​
#include
void getnum(int a[],int n)
{
    int i;

    printf("你要输入的数据个数是%d:\n",n);
    for(i=0;i*max)
      {
          max=p;
      }




  }//别把if判断放在for循环里面
      if(min!=arr)//这是在看地址是否相等,能起到比较地址后面的数据是否相等的作用
      {
        
          swap(arr,min);

      }
       if(max!=arr+n-1)
      {
          if(max==arr)
          {
             
                swap(arr+n-1,min);//当max==arr时,经历上面的交换,arr的值到了min里面,所以这里是交换min
          }




         else  if(max!=arr)
          {
            swap(arr+n-1,max);


          }
      }
}


void print(int arr[],int n)
{
    printf("结果是:\n");
    int i;
    for(i=0;i

你可能感兴趣的:(算法,数据结构)