首页 > 代码库 > OJ刷题之《输入10个整数》

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

题目描述

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






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