好吧,请放轻松.刚学习C++,首先也在这里提问.我已经写了一个程序来列出1000以下的所有阿姆斯特朗数字.虽然我读过关于自恋数字的维基百科文章,但我只是在寻找3位数字.这意味着我只关心数字立方体的总和.
它的工作原理是执行for循环1到1000,使用用户定义的函数检查索引变量是否为非常强大,如果是,则打印它.用户定义的函数只需使用while循环来隔离数字并将多维数据集的总和与原始数字相匹配即可.如果为真,则返回1,否则返回0.
问题是,我在输出中绝对没有数字.只显示void main()中的cout语句,其余为空白.试图尽可能多地调试.编译器是Turbo C++.码-
#include<iostream.h>
#include<conio.h>
int chk_as(int);//check_armstrong
void main()
{
clrscr();
cout<<"All Armstrong numbers below 1000 are:\n";
for(int i=1;i<=1000;i++)
{
if (chk_as(i)==1)
cout<<i<<endl;
}
getch();
}
int chk_as (int n)
{
int dgt;
int sum=0,det=0;//determinant
while (n!=0)
{
dgt=n%10;
n=n/10;
sum+=(dgt*dgt*dgt);
}
if (sum==n)
{det=1;}
else
{det=0;}
return det;
}
Run Code Online (Sandbox Code Playgroud)
问题是您在方法中动态更改n的值,但是您需要其原始值来检查结果.
添加一个临时变量,比如t.
int t = n;
while (t!=0)
{
dgt=t%10;
t=t/10;
sum+=(dgt*dgt*dgt);
}
if (sum==n)
// ... etc.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
922 次 |
| 最近记录: |