PTA 交换最小值和最大值 (15 分) 本题要求编写程序先将输入的一系列整数中的最小值与第一个数交换然后将最大值与最后一个数交换最后输出交换后的序列。注意题目保证最大和最小值都是唯一的。输入格式输入在第一行中给出一个正整数N≤10第二行给出N个整数数字间以空格分隔。输出格式在行中顺序输出交换后的序列每个整数后跟一个空格。输入样例5 8 2 5 1 4输出样例1 2 5 4 8记录我debug几个小时的题改了好几遍T-T,这是我的第一篇博客此题一开始做法是用选择排序但是选择排序中间的数字的顺序也会跟着改变后来我的想法是先找到最大值最小值然后再遍历数组在数组中找到对应的数再将对应的数根据题目要求的那样交换但很奇怪结果一直不对这是改过的正确代码#includestdio.h int main() { int array[10]; int n,j,i,k,temp,l; scanf(%d,n); for(i0;in;i) scanf(%d,array[i]); int minarray[0],maxarray[n-1]; for(l0;ln;l){ min(minarray[l])?min:array[l]; max(maxarray[l])?max:array[l]; } for(k0;kn;k) { if(array[k]min){ temparray[0]; array[0]array[k]; array[k]temp;} } for(k0;kn;k) { if(array[k]max){ temparray[n-1]; array[n-1]array[k]; array[k]temp;} } for(j0;jn;j){ printf(%d ,array[j]); } return 0; }原始版1一开始min,max结果一直不对当for(l0;ln;l){ min(minarray[l])?array[0]:array[l]; max(maxarray[l])?array[n-1]:array[l]; }试想当最后一次循环当上一次的结果使maxarray[l-2],但是此次循环array[l-2]array[l-1],则结果应该是array[l-2]按我上面的代码来结果会变成array[n-1],不能又等于初始值的错误要清楚循环过程中max可以改变的初始版2改完上一个我的下面代码其实是这样的并一起遍历并没有考虑到是首先交换首数因为可能先对应到max,则max先交换了for(k0;kn;k) { if(array[k]min){ temparray[0]; array[0]array[k]; array[k]temp;} } else if(array[k]max){ temparray[n-1]; array[n-1]array[k]; array[k]temp;} }以下是借鉴了厉害的uu的答案,我又加以简化了思路可以学习改变数组下标方式思路简单一些效率更高#includestdio.h int main() { int array[10]; int n,j,i,k,temp,l; scanf(%d,n); for(i0;in;i) scanf(%d,array[i]); int minarray[0],maxarray[n-1]; for(l0;ln;l){ min(minarray[l])?min:array[l]; max(maxarray[l])?max:array[l]; } for(k0;kn;k) { if(array[k]min){ temparray[0]; array[0]array[k]; array[k]temp; } } for(k0;kn;k) { if(array[k]max){ temparray[n-1]; array[n-1]array[k]; array[k]temp; } } for(j0;jn;j) printf(%d ,array[j]); return 0; }看清题意此题1.中间数字序列不能改变只是首位数改变2.先改变首数后是尾数所以不能并一起遍历
💡
读完这篇文章,你可以带走什么

本文来自编程新知一线开发与建站实战沉淀:讲清原理、给出可复现步骤、标注避坑要点。看完后可以直接在你的项目或网站中落地验证。

编程新知内容团队
一线开发 · 建站实施 · 持续更新
由资深前端工程师、后端架构师与建站实施人员共同维护,坚持"真实案例 + 完整步骤 + 避坑指南"的内容准则。如果你在落地中遇到问题,欢迎联系我们交流。

想把这套方案用到自己的项目上?

编程新知提供技术答疑与网站建设一站式服务,欢迎联系我们获取针对性建议。

联系工程师
📚

系统学习该技术

进入对应栏目,从基础到进阶完整学习,配套案例与避坑指南。

前往栏目 →
🏗️

需要落地实施

企业建站、SEO 优化、服务器部署等需求,交给工程师一步到位。

了解服务 →
💬

还有疑问

技术难题或方案咨询,联系编程新知获取一对一的专业建议。

联系我们 →