C語言課後習題程式設計作業
***内容為本周第九周課後作業
輸入一個整數數組(元素個數=10),選出最小值和最後一個元素交換,選出最大值和第一個元素交換,輸出處理後的數組。 要求:用函數實作交換,并在交換中使用到指針。輸入的具體資料可以與示例圖不相同。
努力成為一名合格的網絡空間安全工程師
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iM0IjMyYWNwgDMiZ2MlhTNzYzX1MDOzUTM2IzLcBTMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
***歡迎大家提出寶貴的意見
思路:(大佬們嘴下留情,但是希望大佬有更好的思路讓我進步)
#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;
}
}
}