关于完数的++编程问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 05:30:38
看一下面这两个代码为什么会有不同的结果呢?我一直弄不懂,先谢谢大家的帮忙了!
第一:#include<iostream>
using namespace std;
void main()
{
int n,i,t=0;
for(n=1;n<=1000;n++)
{
for(i=1;i<=n/2;i++)
if(n%i==0)
t+=i;
if(t==n)
cout<<n<<endl;
}
}
第二:#include<iostream>
using namespace std;
void main()
{
for(int n=1;n<=1000;n++)
{
int t=0;
for(int i=1;i<=n/2;i++)
if(n%i==0)
t+=i;
if(t==n)
cout<<n<<endl;
}
}

第二个的int t=0是个局部变量,再for(int n=1;n<=1000;n++){。。。。}每循环完一次t就被释放了(栈),而第一个的t对于for循环来说相当于一个全局变量。
如果你还不明白,我建议你还是从头看看c++的语法吧,你基础知识都没掌握住