原题链接:[编程入门]自定义函数之整数处理
解题思路:解题关键还是在第二个函数——进行处理。
根据题目我们要处理的是找出最大值or最小值,之后按要求交换位置即可;再仔细观察我们不难发现最大值和最小值要求其实差不多,那么我们的问题就变成
找最小值——利用数组,假设第一位为最小值,然后不断比较
保存最小值位置——找到最小值后,用个数记录当前位置;
之后与第一位交换
最大值也是类似
参考代码:
#include<stdio.h> #define n 10 //输入 int in(int a[100]){ int i; for(i=0;i<n;i++){ scanf("%d",a[i]); } return 0; } //主要排序交换函数 int change(int a[100]){ int max,min; int x=0; //记录最大or最小值的位置 int temp,i; min=a[0]; //假设最小值是第一位,之后一个一个比较 for(i=1;i<n;i++){ if(a[i]<min){ min=a[i]; x=i; } } //这里注意应该是确定最小值后交换,避免重复交换 temp=a[0]; //与第一位交换 a[0]=a[x]; a[x]=temp; //从上面可以确定第一位是最小值,所以从第二位开始假设 max=a[1]; for(i=2;i<n;i++){ if(a[i]>max){ max=a[i]; x=i; } } temp=a[9]; //与最后一位交换 a[9]=a[x]; a[x]=temp; return 0; } int out(int a[100]){ int i; for(i=0;i<n;i++){ printf("%d ",a[i]); } return 0; } int main(){ int a[n]; in(a); change(a); out(a); return 0; }
但个人感觉代码有些冗余,而且本人不太会用指针,如有更好的,欢迎讨论
0.0分
1 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复