天天看點

輸入一個整數數組(元素個數=10),選出最小值和最後一個元素交換,選出最大值和第一個元素交換,輸出處理後的數組(使用指針))

C語言課後習題程式設計作業

***内容為本周第九周課後作業

輸入一個整數數組(元素個數=10),選出最小值和最後一個元素交換,選出最大值和第一個元素交換,輸出處理後的數組。 要求:用函數實作交換,并在交換中使用到指針。輸入的具體資料可以與示例圖不相同。

努力成為一名合格的網絡空間安全工程師
輸入一個整數數組(元素個數=10),選出最小值和最後一個元素交換,選出最大值和第一個元素交換,輸出處理後的數組(使用指針))

***歡迎大家提出寶貴的意見

思路:(大佬們嘴下留情,但是希望大佬有更好的思路讓我進步)

#include<stdio.h>
#include<string.h>
#define

int sort(int *,int *,size_t);                         //實作排序功能并且暫存到另一數組友善我之後尋找最大最小值
int swap_min(int *,int *);                           //實作最小值放末尾
int swap_max(int *,int *);                 //實作最大值放開頭

int main()                       //今天也要努力為成為一名合格網絡空間安全工程師加油鴨!!!沖沖沖!!!
{
  int a[M],c[M];                                   //c用于存放排序後的數組 c首位為最小值 末位為最大值
  int *p=a;
  int i,j;
  printf("please input 10 numbers:\n");
  for(i=0;i<M;i++) scanf("%d",p+i);
  sort(a,c,M);
  swap_min(a,c);
  swap_max(a,c);
  printf("Now they are:\n");
  for(i=0;i<M;i++) printf("%-8d",a[i]);             //今天學會了左對齊輸出
  puts("");

}

int sort(int *a,int *c,size_t b)
{
  int i,j,max;
  for(i=0;i<M;i++)
  {
    *(c+i)=*a++;
  }
  for(i=0;i<b-1;i++)
  {  
    for(j=0;j<b-i-1;j++)
    {
      if(*(c+j)>*(c+j+1))
      {
        max=*(c+j);
        *(c+j)=*(c+j+1);
        *(c+j+1)=max;
      }
    }
  }
}

int swap_min(int *a,int *b)
{
  int tmp;
  int i;
  for(i=0;i<M;i++)
  {
    if(*(a+i)==*b)
    {
      tmp=*(a+M-1);
      *(a+M-1)=*(a+i);
      *(a+i)=tmp;
    }
  }
}

int swap_max(int *a,int *b)
{
  int tmp;
  int i;
  for(i=0;i<M;i++)
  {
    if(*(a+i)==*(b+M-1))
    {
      tmp=*a;
      *a=*(a+i);
      *(a+i)=tmp;
    }
  }
}