本帖最后由 jackz007 于 2024-9-27 23:07 编辑 #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
// 由于程序中需要多次交换变量,
// 所以,最好定义专门的函数
void swap(int * a , int * b)
{
int c = * a ;
* a = * b ;
* b = c ;
}
//输入10个整数
void Input10num(int * arr , int num)
{
int i ;
for (i = 0 ; i < num ; i ++) scanf("%d", arr + i) ;
}
//10个整形数据传进来,最小的和第一个数换,最大的和最后一个换
void make(int * arr , int num)
{
int a , b , i , j ;
for (i = 0 ; i < num / 2 ; i ++)
{
a = i ; // a : 本轮首位元素索引
b = num - 1 - i ; // b : 本轮末位元素索引
if(arr[a] > arr[b]) swap(& arr[a] , & arr[b]) ; // 首尾元素大小倒置则交换
for(j = i + 1 ; j < num - i - 1 ; j ++)
{
if(arr[j] < arr[a]) a = j ; // 更新最小值索引
if(arr[j] > arr[b]) b = j ; // 更新最大值索引
}
if(a != i) swap(& arr[a] , & arr[i]) ; // 把最小值交换到本轮首位元素
if(b != num - 1 - i) swap(& arr[b] , & arr[num - i - 1]) ; // 把最大值交换到本轮末位元素
}
}
//输出10个整数
void printf10num(int*arr,int num)
{
int i;
for (i = 0; i < num; i++) printf("%d ", *(arr + i)) ;
printf("\n") ;
}
// 只要满足定义在前,调用在后的顺序
// 同一个文件中的函数一般都不用声明
// 把 main() 放最后就是为了免声明
int main(void)
{
int a[10] = {0};
int*p = a;
printf("Please input 10 integer num:\n");
Input10num(p, 10);
make(p, 10);
printf10num(p, 10);
system("pause");
return 0;
}
|