首页 > 解决方案 > 我的程序正在退出,返回值 3221225620

问题描述

我已经为数组旋转编写了一个 cpp 代码,文件处理部分对我来说有点棘手。代码本身是正确的,但即使文件与代码位于同一目录中,由于某种原因它也无法正常工作

#include <math.h>
#include <algorithm>
#include <bits/stdc++.h>
#include <iostream>
#include <fstream>
using namespace std;
int ar[100];
// #define crap ios_base::sync_with_stdio(false);cin.tie(NULL);

int gcd(int a, int b)
{
    if (b == 0)
        return a;
 
    else
        return gcd(b, a % b);
}
void leftRotate(int arr[], int d, int n)
{
    d = d % n;
    int g_c_d = gcd(d, n);
    for (int i = 0; i < g_c_d; i++) {
        int temp = arr[i];
        int j = i;
 
        while (1) {
            int k = j + d;
            if (k >= n)
                k = k - n;
 
            if (k == i)
                break;
 
            arr[j] = arr[k];
            j = k;
        }
        arr[j] = temp;
    }
}

//int *func(int m)
//{
//  int *p;
//  p=new int[m];
//  return (p);
//}

int main()
{
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin); 
    freopen("output.txt","w",stdout);
    #endif

    // crap;
    int n,d;
    cin>>n>>d;
    // ar=func(n);
    // cout<<sizeof(ar);
    for (int i=0;i<n;i++)
    {
        cin>>ar[i];
    }
    leftRotate(ar, d, n);

    for (int i = 0; i < n; i++)
        cout << ar[i] << " ";
    return 0;
}

代码本身正在工作并在终端中返回正确的输出,但我似乎无法在这里找到问题,我在没有文件处理的情况下尝试过,它在终端示例输入处给出了返回值 3221225620:

5 2
1 2 3 4 5

标签: c++

解决方案


这里显示一个可能的错误:

3221225620 (0xC0000094): Zero Division Error

意味着代码中的除数有时可能为零。

至于您的代码(第 20 行:)d = d % n;,当您n是时0,输出将显示return value 3221225620

所以请检查您的数据"input.txt"


推荐阅读