你看我像大猩猩不? 2022-10-18 11:17 采纳率: 94.9%
浏览 21
已结题

请问这哪里错了呢,为啥输出是这个?

请问我写的这个 用函数实现将n个数按照输入顺序的逆序排列 哪里错了呢,为啥输出是这个?


#include <iostream>
using namespace std;
void inverse(int *p);
int main()
{
    int n;
    cout<<"输入数组元素的个数n"<<endl;
    cin>>n;
    int arr[n];
    cout<<"输入你的数组"<<endl;
    cin>>arr[n];
    int *p=arr;   
    for(int i=0;i<n;i++)
    {
       cout<<arr[i]<<endl;     
    } 
    cout<<"逆置后"<<endl;
    inverse(arr);    
    for(int i=0;i<n;i++)
    {
       cout<<arr[i]<<endl;     
    } 
    return 0;
}
void inverse(int *p)
{

//    int *a=arr;
    int n;
    int arr[n];
       int temp;
    for(int i=0;i<n/2;i++)
    {
        temp=*(p+i);
        *(p+i)=*(p+n-1-i);
        *(p+n-1-i)=temp;
    }
     
}

img

  • 写回答

3条回答 默认 最新

  • 浪客 2022-10-18 11:33
    关注
    
    #include <iostream>
    using namespace std;
    void inverse(int *p,int n);
    int main()
    {
        int n;
        cout << "输入数组元素的个数n" << endl;
        cin >> n;
        int arr[n];
        cout << "输入你的数组" << endl;
        // cin >> arr[n];
        for (int i = 0; i < n; i++)
        {
            cin >> arr[i];
        }
        int *p = arr;
        for (int i = 0; i < n; i++)
        {
            cout << arr[i] << " ";
        }
        cout << endl;
        cout << "逆置后" << endl;
        inverse(arr,n);//
        for (int i = 0; i < n; i++)
        {
            cout << arr[i] << " ";
        }
        cout << endl;
        return 0;
    }
    void inverse(int *p,int n)
    {
        //    int *a=arr;
        //int n;
        // int arr[n];
        int temp;
        for (int i = 0; i <= n / 2; i++)
        {
            temp = *(p + i);
            *(p + i) = *(p + n - 1 - i);
            *(p + n - 1 - i) = temp;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月26日
  • 已采纳回答 10月18日
  • 创建了问题 10月18日