请问为什么在本地vs上运行输入输出都没啥问题,但是上传到oj系统就是会答案错误呢?实在不会找&找不到哪里不对,不熟悉oj,求指导

img

img

img



#include<iostream>
using namespace std;

template <class T, int N>
class SeqList {
public:

    int Locate(T);
    T Delete(int i);
    void Insert(int i, T x);
    void PrintList();
    void Operation(char ch);
private:
    T data[N];
    int length = 0;
    
};

template <class T, int N>
void SeqList<T, N>::Insert(int i, T x)
{
    if ((i < 1) || (i > length + 1))    throw  "插入位置异常";
    if (length >= N)                    throw"上溢";
    int j;
    for (j = length; j >= i; j--)
    {
        data[j] = data[j - 1];
    }
    data[i - 1] = x;
    length++;
}

template <class T, int N>
T SeqList<T, N>::Delete(int i)
{
    if ((i < 1) || (i > length))    throw"位置异常";
    if (length == 0)                throw"下溢";

    T temp = data[i - 1];
    for (int j = i; j < length; j++)
    {
        data[j - 1] = data[j];
    }
    length--;
    return temp;
}

template<class T, int N>
int SeqList<T, N>::Locate(T x)
{
    data[0] = x;
    for (int i = length; data[i] != x; i--)
    return i;
}

template<class T, int N>
void SeqList<T, N>::PrintList()
{
    if (length == 1)
    {
        cout << data[0];
    }
    else
    {
        for (int i = 0; i < length - 1; i++)
        {
            cout << data[i] << " ";
        }
        cout << data[length-1];
    }
    
    cout << endl;
}

template<class T, int N>
void SeqList<T,N>::Operation(char ch)
{
    int x;
    T y;
    switch (ch)
    {
    case 'i':
        cin >> x >> y;
        Insert(x, y);
        break;
    case 'd':
        cin >> x;
        Delete(x);
        break;
    case 'l':
        cin >> y;
        x=Locate(y);
        cout << x << endl;
        break;
    case 'p':
        PrintList();
        break;
    }
}

int main(void)
{
    SeqList<int, 100>a;
    SeqList<char, 100>b;
    SeqList<double, 100>c;

    char ch1, ch2;

    while (cin >> ch1)
    {
        cin >> ch2;
        switch (ch1)
        {
        case 'a':a.Operation(ch2);
            break;
        case 'b':b.Operation(ch2);
            break;
        case 'c':c.Operation(ch2);
            break;
        }
    }
    return 0;
}

locate函数为何要 data[0] = x;????

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632