请问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