求解释?C++,看注释

回明狂客 2014-03-29 06:59:34
运行环境VC++6.0,在定义k是赋值不行,k=0放到下面就行了,为什么?

#include <iostream>
using namespace std;
int main()
{
int i,j,k; //为什么k不能在这里赋值0?
for(i=2;i<1000;i++)
{
k=0; //为什么k=0,放在定义类型时不行?
for(j=1;j<i;j++)
if(i%j==0)
k=k+j;

if(k==i)
{
cout<<i<<" is wanshu"<<endl;
cout<<"its factors are:";
for(j=1;j<i;j++)
if(i%j==0)
cout<<j<<" ";
cout<<endl;
}
}
return 0;
}
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
simon_zf 2014-03-30
  • 打赏
  • 举报
回复
这段代码是计算1000以内的所有完数,如果k=0放在上面定义,每次循环k的值都会累加,当然不行,放在第一层循环体的里面,保证每次循环开始k=0
bobo928843007 2014-03-29
  • 打赏
  • 举报
回复

/*它约数之和等于它本身*/

#include <iostream>
#include<math.h>
 using namespace std;
 int main()
 {
	 int i,j,k=0;                                                                                //为什么k不能在这里赋值0?
	for(i=2;i<1000;i++)
	 {
		 k=0;   //放在外面k=上一次的值,没置0.                                                           //为什么k=0,放在定义类型时不行?
		for(j=1;j<=(int)i/2;j++)
		 if(i%j==0) 
		 k=k+j;

		 if(k==i)
		 {
			 cout<<i<<" is wanshu"<<endl;
			 cout<<"its factors are:";
			 for(j=1;j<i;j++)
			 if(i%j==0)
			 cout<<j<<" ";
			 cout<<endl;
		 }
	 }
	 return 0;
 } 
点不亮的黑色 2014-03-29
  • 打赏
  • 举报
回复
楼主,如果在定义k时就赋值编译和运行都可以,只不过得不到结果。明显的是你的k值没有更新,之后i的值也在不断增加,你自己算算k和i能有相等的时候么?

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧