新手提问:for循环语句

请问for循环语句这样写和合在一起有什么区别?为什么答案会不一样?

#include<iostream>
using namespace std;
int main()
{   int i,n,a[1001],b[1001],result=0;
    cin>>n;
    for(i=1;i<=n;i++) 
    {   cin>>a[i];
         cin>>b[i];
         result+=a[i]*b[i];
            }
    cout<<result<<endl;
    return 0;
}

#include<iostream>
using namespace std;
int main()
{   int i,n,a[1001],b[1001],result=0;
    cin>>n;
    for(i=1;i<=n;i++) cin>>a[i];
      for(i=1;i<=n;i++) cin>>b[i];
      for(i=1;i<=n;i++) result+=a[i]*b[i];

    cout<<result<<endl;
    return 0;
}

设置断点后调试 看一下a[i]b[i]值得走向。不建议这样写循环,性能差容易出错外还加重代码的负担。

我刚才试了一下... ...发现... ...没毛病啊!
是不是遇到溢出或者什么极端数据了吗?

或者... ...
在for的括号的最后插入这几行代码试试:
cout<<"i="<<i<<" result="<<result<<endl;

实时监控result的值与i的关系。
我是用这种方式查看错误的... ...
希望可以帮到你!

主要原因是输入的顺序不一样。

第一种是输入一个a[i],紧接着输入一个b[i],紧接着再算出result,这样循环n次;
第二种是统一输入a数组,再统一输入b数组,最后再算出result。

两种输入顺序不一样,答案当然就不一样了。

不一样,主要是result那句,第一个是对循环里每一个i求它对应的a[i]b[i]及对应的result,第二个是先循环出最终的a[i]b[i]再求result