【发布时间】:2013-10-31 14:28:42
【问题描述】:
好吧,请放轻松。刚刚学习 C++,首先在这里也提问。我编写了一个程序来列出所有低于 1000 的 Armstrong 数字。虽然我已经阅读了关于自恋数字的 Wikipedia 文章,但我只在寻找 3 位数字。这意味着我只关心数字的立方的总和。
它的工作原理是为 1 到 1000 执行一个 for 循环,使用用户定义的函数检查索引变量是否为 armstrong,如果是则打印它。用户定义的函数只需使用一个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;
}
【问题讨论】:
-
main应该返回int。 -
@ShafikYaghmour 这不是强制性的。
-
@AliAlamiri 当然是!从 N3337,3.6.1:“实现不应预定义
main函数。此函数不应重载。它的返回类型应为int,否则其类型为实现定义。所有实现都应允许main的以下定义:int main() { /* ... */ }和int main(int argc, char* argv[]) { /* ... */ }" -
另外,
#include<iostream.h>应该是#include <iostream>。没有称为iostream.h的标准标头。 -
@user1158692 that 是标准可选的。
标签: c++