看这个斐波那契数列,错误来源:wdy
#include<iostream> #include<iomanip> using namespace std; int main(){ int i,m; int a[20]; m=0; //cout<<"m = "<<m<<endl; a[0]=a[1]=1; for(i=2;i<=20;i++)//此处越界 a[i]=a[i-1]+a[i-2]; //cout<<"m = "<<m<<endl;//m的值竟然变了,怎么貌似一个数呢 //cout<<"a[20] = "<<a[20]<<endl;//竟然等于a[20] //cout<<&m<<endl; //cout<<&a[20]<<endl;//a[20]竟然就是m for(i=0;i<20;i++){ m++; cout<<setw(8)<<a[i]; //cout<<" m = "<<m; if(m%5==0)cout<<endl; } return 0; }
结果:
为什么第一行少一个。。。
把代码中注释全开:
都是越界惹得祸,,,a[20]就是m。m的值改变了,所以输出有误。