当前位置: 首页 > 知识库问答 >
问题:

这个问题的输出是正确的,但我得到了一个分段错误

孔经武
2023-03-14

我正在尝试解决数组旋转的程序。我在代码中遇到分段错误。有人能告诉我这个代码中的问题在哪里吗?

这就是问题所在

给定一个大小为N的未排序数组arr[],将其旋转D元素(顺时针)。

输入的第一行包含T表示测试用例的数量。每个测试用例的第一行包含两个空格分隔的元素,N表示数组的大小,整数D表示旋转的数字大小。随后的行将是N个空格分隔的数组元素

我已经用下面的代码解决了它。

#include <iostream>
using namespace std;
int* rotate(int ar[],int n, int m)
{static int temp[100];
 for(int i =0;i<m;i++)
 {
        temp[i]=ar[i];
    }
    for(int j =m;j<n;j++)
    {
        ar[j-m]=ar[j];
    }
    int x=0;
    for(int k =n-m;k<n;k++)
    {   
        ar[k]=temp[x];
        x++;
    }
   return ar; 
}


int main() {
    //code
    
    int t, n , m;
    cin>>t;
    while(t>0)
    {
        cin>>n>>m;
        int arr[n];
        int * ptr;
        for(int i = 0 ;i<n;i++)
        {
            cin>>arr[i];
        }
        
        ptr=rotate(arr,n,m);
        for(int j=0;j<n;j++)
        cout<<ptr[j]<<" ";
        
        cout<<endl;
        
        t--;
    }
    
    
    
    return 0;
}

共有1个答案

蔺宇
2023-03-14

如果m

如果m

可能还有更多的病例。

 类似资料: