阿姆斯特朗号码不起作用

Arp*_*pta 2 c++

好吧,请放轻松.刚学习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)

Ale*_*ker 6

问题是您在方法中动态更改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)