解题思路:
注意事项:依次选出和交换max、min,别先选出各自下标,再交换,在第一次交换时,可能会改变原下标下的数值,先前记录的max/min已被更新,造成标记过时
参考代码:
#include <stdio.h>
#define LEN 10
#define CHANGE(a,b) t=a,a=b,b=t
int arr[LEN]; //全局变量便于修改
int t; //交换用过渡变量
int i; //循环计数器
void input(){
for(i=0;i<LEN;i++)
scanf("%d",&arr[i]);
}
void dispose(){
int max_idx=0,min_idx=0;
//依次交换max、min
for(i=0;i<LEN;i++)
if(arr[i]>arr[max_idx])
max_idx=i;
// printf("max_idx=%d\n",max_idx);
CHANGE(arr[LEN-1],arr[max_idx]);
for(i=0;i<LEN;i++)
if(arr[i]<arr[min_idx])
min_idx=i;
// printf("min_idx=%d\n",min_idx);
CHANGE(arr[0],arr[min_idx]);
}
void output(){
for(i=0;i<LEN;i++)
printf("%d ",arr[i]);
}
int main()
{
input();
dispose();
output();
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复