PAT乙级1010出现段错误是什么原因?

1010 一元多项式求导
设计函数求一元多项式的导数。(注:x^n(n为整数)的一阶导数为nx^​(n−1)。)
输入格式:
以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。
输出格式:
以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。
输入样例:
3 4 -5 2 6 1 -2 0
输出样例:
12 3 -10 1 6 0

我的代码:

#include<iostream>
#include<vector>
using namespace std;

int main()
{
    vector<int> v;//存放输入的值
    vector<int> result;//存放输出的结果
    int n;
    int a, b;//系数,指数
    while(cin>>n)
    {
        v.push_back(n);
        if (cin.get() == '\n') 
            break;
        
    }

    for(int i = 0; i < v.size(); i+=2)
    {
        if(v[i+1] == 0)
            continue;
        a = v[i] * v[i+1];
        b = v[i+1] - 1;
        
        result.push_back(a);
        result.push_back(b);
    }

    for(int i = 0; i < result.size() - 1; i++)
    {
        cout<<result[i]<<" ";
    }
    cout<<result[result.size() - 1];
    return 0;
}

运行结果都是对的,但将代码提交上去时有段错误,请问是什么原因?
(目前对段错误的了解只知道是程序不该访问的内存空间)

阅读 3k
2 个回答

试一试用vs之类的ide做一下代码检查

新手上路,请多包涵

可以试试这个:

#include<iostream>
using namespace std;
int main(){    
int index;
    int expo;
        cin>>expo>>index;    
        if(index==0)//如果指数为0     
        {        
        cout<<"0 0";        
        return 0;
            }     
        else//注意第一次输出的格式 !     
        cout<<index*expo<<' '<<index-1;
            while(cin>>expo>>index)//输入直到文件末尾     
            if(index!=0)//注意如果指数为0,不作输出!     
            cout<<' '<<index*expo<<' '<<index-1;//注意要先输出空格! 
                return 0;
                }
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题