|
发表于 2024-9-27 22:54:05
|
显示全部楼层
本帖最后由 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;
- }
复制代码 |
|