回 帖 发 新 帖 刷新版面

主题:这个循环怎么有点怪啊。。

不知道是不是脑子进水。 下面代码 是求完数的。。
#include<iostream.h> 

void main()

 int m; 
 for(m=1;m<=1000;m++)
 { 
  int k=0; 
  for(int i=1;i<m;i++)//我用编译器跑了下 怎么到这 m=2??
  { 
   if((m%i)==0)
    k=k+i; 
  } 
  if(k==m)
   cout<<" "<<m<<endl; 
 } 
}
我的思路是①。m=1;m<=1000;
int k=0;
int i=1;
i<m;m不会小于i啊。。所以接着。。下面的都将不会执行。。。
第二次编译。。
i++;
int i=2;
i<m;//根本不成立啊。。所以 我认为 怎么不会执行啊。。。 刚刚学习C++ 求答案啊。。


回复列表 (共2个回复)

沙发


你是不是掉了一句   using namespace std;

板凳



程序是没问题的,当m=1时,内循环的i<m的条件不满足,但不意味着程序不会执行,
程序会直接跳出内循环,让m=2,这时i还是从1开始的,而不是你说的从2开始,所以还是可以执行的

我来回复

您尚未登录,请登录后再回复。点此登录或注册