【问题描述】编写程序,从任意n个数中找出最大数和最小数,并将它们相互交换后输出。
【输入形式】输入分2行:第一行为n的值(数据个数),第二行为n个数(各数间用空格分隔)。
【输出形式】互换完最大数和最小数位置的n个数(各数间用一个空格分隔)。
【样例输入】
5
1 5 3 2 0
【样例输出】
1 0 3 2 5
【样例说明】数列1、5、3、2、0中最大数是5,最小数是0,交换它们两个的位置,这个数列就变为:1、0、3、2、5
下面是该题目对应代码:
#include<iostream>
using namespace std;
int main()
{
int a[100],n,i,t,max,min;
cin>>n;
//输入n个数
for(i=0;i<n;i++)
cin>>a[i];
//假设第一项即使最大项也是最小项
max=0;
min=0;
for(i=1;i<n;i++)
{
if(a[i]>a[max])
max=i;
if(a[i]<a[min])
min=i;
}
//如果最大最小不相同就交换彼此,这里采用的中间变量的办法
if(min!=max)
{
t=a[min];
a[min]=a[max];
a[max]=t;
}
//输出结果
for(i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
return 0;
}
以上就是数组习题:交换最大与最小相关的内容,是小编个人见解如有歧义欢迎评论和私自讨论!
感谢观看,尊重原创!