#include<iostream> using namespace std; int main(

#include<iostream> using namespace std; int main() {int i,j,r; for(r=0,i=2;i<=1000;i++) {for(j=1;j<i;j++) if(!i%j) r=r+j;} if(i==r) cout<<i<<endl; return 0;}
输出二到一千之间的完数 为什么得不到结果

因为循环结束后 i≠r,所以if(i==r) 判断为假,没有执行输出语句,就没有结果了

for(r=0,i=2;i<=1000;i++)
{
for(j=1;j<i;j++)
if(!i%j) 
r=r+j;
}
// 这时r = 0 ,i = 1001
if(i==r)     
cout<<i<<endl;

另外,如果是想判断i与j的模为0时执行的话,

if(!i%j)

应该改为

if(!(i%j))


求2至1000之间的完数的代码可以参考这里:

http://zhidao.baidu.com/link?url=DGyDJxzE900Rvvug4qLqdGgqIWiZ83XE7QaNL5V-S0WZiQwUr_Vdz87KiTN-bfez25ArUJ7eCJxI1dCj7rLRKK


请采纳

追问

当i==r时 i的值为什么输不出来

追答

如果i==r是会输出的,问题在于i≠r,所以没有执行

cout<<i<<endl;

可以自己在if(i==r) 这句前面加上

cout<<r<<endl;
cout<<i<<endl;

看看此时的r和i值是多少就能明白了,这也是一种常用的调试技巧

追问

为什么 6输不出来呢

追答

6输不出来是什么意思?

追问

就是 程序在运行的时候 得不到结果 啥都没有

追答

已经说过了啊,因为没有执行cout语句,当然啥都没有了啊

好好检查一下你的程序的逻辑和流程

参考一下给你链接的那个程序吧


这里稍微改了一下,供参考

#include<iostream>
using namespace std;
int main()
{
int i,j,r;
for(i=2;i<=1000;i++)
{
for(r=0,j=1;j<i;j++)
if(!(i%j))
r=r+j;
if(i==r) 
cout<<i<<endl;
}
//if(i==r)
// cout<<i<<endl;
return 0;
}

追问

加注释 做什么

追答

注释掉就是不编译不执行啊少年......
要先看看C/C++的语法再开始编程啊.......

追问

我到时候 运行看下

谢谢啊

#include using namespace std;int main(){int i,j,k;for(i=1;i=0;i--){for(k=1;k<=5-i;k++)cout<<""<<endl;for(j=1;j<=2*i-1;j++)cout<<'*';}//for(k=1;k<=5;k++) cout<<""<<endl;return 0;}

我想用星号输出一个九行的菱形 结果得到上面那个

帮我看看

追答#include <iostream>
using namespace std;
int main()
{
int i,j,k;
for(i=1;i<=5;i++)
{
for(k=1;k<=5-i;k++)
cout<<" ";  // 引号里有一个空格
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout<<endl;         // 输出一行后再换行
}
//for(k=1;k<=5-i;k++) cout<<""<<endl;
for(i=4;i>=0;i--)
{
for(k=1;k<=5-i;k++)
cout<<" ";
for(j=1;j<=2*i-1;j++)
cout<<'*';
cout<<endl;
}
//for(k=1;k<=5;k++) cout<<""<<endl;
return 0;
}

注意编程的格式

追问

谢谢

数组指针中的元素可以给指针变量赋值吗

追答

应该是指针数组吧
指针数组的元素是指针
指针变量存储的是指针
所以指针数组的元素可以赋给指针变量
在使用指针的时候需要小心一点

温馨提示:答案为网友推荐,仅供参考