OJ刷题之《输入10个整数》

来源:互联网 发布:西西网络图软件 编辑:程序博客网 时间:2024/06/05 04:05

题目描述

输入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'的问题。要牢记,不然输出的时候后面会多很多数。






1 0