猿问

c++新手问题

求 完数
#include<iostream>
using namespace std;
int sum=0;
int a;
int main()
{
for(int a=1;a<=1000;a++)
{
for(int i=1;i<=a;i++)
if(a%i)continue;
sum=sum+i;
if(a!=sum)continue;
cout<<a<<endl;
system("pause");
}
}

编译后提示 这行" sum=sum+i; "
name lookup of `i' changed for new ISO `for' scoping 
using obsolete binding at `i' 
是什么意思

我错在哪? 应该怎么改? 为什么?

HUX布斯
浏览 642回答 1
1回答

一只甜甜圈

在程序开始时你已经定义过a了,然后在for循环里又再一次定义#include<iostream>using namespace std;/*写的是C风格的代码*/int main(){int sum;int i,j;for( i = 2 ; i <= 1000 ; i++ )//1不是完数,不必判断{sum=0;//初始化sum=0for( j = 1 ; j <= i/2+1 ; j++){if( 0 == i%j ){sum=sum+j;}}if( i ==sum ){cout<<i<<endl;}//system("pause");/*不知道你这句话要干嘛,不懂加在哪合适?*/}return 0;}百度百科里有关于完数的介绍,你可以去看下,要学会自己在网上找资料,不要一味的不懂就问。应该尝试自己解决。
随时随地看视频慕课网APP
我要回答