输入10个整数,将最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数:1、输入10个数;2、进行处理;3输出10个数。
今天复习C++时做到这题,查了很多的代码,都是最大数在第一个或最小数在最后一个时,就会出现问题。
解决后代码如下:
#include<iostream>
using namespace std;
void input(int *number);
void max_min_value(int *number);
void output(int *number);
int main()
{
int number[10];
input(number);
max_min_value(number);
output(number);
return 0;
}
void input(int *number)
{
cout<<"input 10 numbers:";
for (int i = 0; i < 10; i++)
{
cin>>number[i];
}
}
void max_min_value(int *number)
{
int *max,*min,*p,temp;
max=min=number;
for (p=number+1;p<number+10;p++)
{
if(*p>*max)
max=p;
else if (*p<*min)
{
min=p;
}
}
if(max==number && min==number+9)
{
temp=*max;
*max=*min;
*min=temp;
}
else if(max== number)
{
temp=number[9];number[9]=*max;*max=temp;
temp=number[0];number[0]=*min;*min=temp;
}
else if(min==number+10)
{
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*max=temp;
}
else
{
temp=number[0];number[0]=*min;*min=temp;
temp=number[9];number[9]=*max;*max=temp;
}
}
void output(int *number)
{
int *p;
cout<<"now,they are:";
for(p=number;p<number+10;p++)
{
cout<<*p<<" ";
}
cout<<endl;
}
进行比较交换的部分可能比较臃肿,但这是我想到的最好的解决方案。