题目描述
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。写三个函数; ①输入10个数;②进行处理;③输出10个数。
输入
10个整数
输出
整理后的十个数,每个数后跟一个空格(注意最后一个数后也有空格)
样例输入
2 1 3 4 5 6 7 8 10 9
样例输出
1 2 3 4 5 6 7 8 9 10
提示
主函数已给定如下,提交时不需要包含下述主函数
/* C/C++代码 */
int main()
{
const int n=10;
int a[n];
input(a,n);
handle(a,n);
output(a,n);
return 0;
}
#include <iostream>
using namespace std;
void input(int *a,int n)
{
int i=0;
while (i<n)
{
cin>>*(a+i);
i++;
}
}
void handle (int *a,int n)
{
int i=0,max=*(a+n-1),min=*a,t,k1,k2;
while (i<n)
{
if (*(a+i)>max)
{
max=*(a+i);
k1=i;
}
else if(*(a+i)<min)
{
min=*(a+i);
k2=i;
}
i++;
}
t=*(a+k1);
*(a+k1)=*(a+n-1);
*(a+n-1)=t;
t=*(a+k2);
*(a+k2)=*a;
*a=t;
*(a+n)='\0';
}
void output(int *a,int n)
{
int i;
for(i=0;*a!='\0';i++)
{
cout<<*a<<" ";
a++;
}
}
int main()
{
const int n=10;
int a[n];
input(a,n);
handle(a,n);
output(a,n);
return 0;
}
还是无法提交图片。一定要注意指针的界限,我在输入的函数里用的cin>>*a;a++;i++;然后就访问到了未知的地址,提交后就显示的运行错误,再有就还是*(a+n)=‘\0'的问题。要牢记,不然输出的时候后面会多很多数。