阿姆斯特朗数字打印错误
Armstrong Number Print Error
我正在尝试在C 中编写一个函数,该功能识别并打印了从一个用户指定的范围内的Armstrong号码。它还返回有多少个整数。它将阅读的最大数字是9,999。
我遇到的问题是,它识别出每个阿姆斯特朗的数字,最多是8208,但不是9474,它们都是阿姆斯特朗的数字。当我根据它们的数字数量处理数字时,这给我带来了极大的混乱,因此,如果成功识别8208,它也应该识别9474。
。这是我的代码:
int isArmstrongNum(int range){
int count = 0;
int ones;
int tens;
int hundreds;
int thousands;
if(range < 1 || range > 9999){
cout << "invalid entry" << endl;
return 0;
}
for(int i = 1; i < range; i++){
if(i < 10){
if(pow(i, 1) == i){
count++;
cout << i << endl;
}
}
else if(i > 9 && i < 100){
ones = i % 10;
tens = (i - ones) / 10;
if(pow(ones,2) + pow(tens,2) == i){
count++;
cout << i << endl;
}
}
else if(i > 99 && i < 1000){
ones = i % 10;
tens = ((i % 100) - ones) / 10;
hundreds = (i - tens * 10 - ones) / 100;
if(pow(ones,3) + pow(tens, 3) + pow(hundreds,3) == i){
count++;
cout << i << endl;
}
}
else if(i > 999 && i < 10000){
ones = i % 10;
tens = ((i % 100) - ones) / 10;
hundreds = ((i % 1000) - tens*10 - ones) / 100;
thousands = (i - hundreds * 100 - tens * 10 - ones) / 1000;
if(pow(ones,4) + pow(tens, 4) + pow(hundreds, 4) +
pow(thousands, 4) == i){
count++;
cout << i << endl;
}
}
}
return count;
}
任何想法为什么它是这种行为?谢谢。
希望这会有所帮助!
#include <iostream>
#include <cmath>
using namespace std;
bool is_armstrong(int number)
{
int length=0,n=number,temp=0;
while(n>0)
{
length++;
n/=10;
}
n=number;
while(n>0)
{
temp+=pow(n%10,length);
n/=10;
}
if(temp==number)
return true;
return false;
}
int main()
{
int i,start_range=1,end_range=9999;
for(i=start_range;i<=end_range;i++)
{
if(is_armstrong(i))
cout<<i<<endl;
}
return 0;
}
Output:
1
2
3
4
5
6
7
8
9
153
370
371
407
1634
8208
9474
相关文章:
- 使用 <list> (错误 C2760) 打印队列的元素
- 任何人都可以弄清楚这段代码如何显示运行错误?它打印无限时间 -1 以及正确答案
- 为什么重载运算符<<打印特征类成员会导致段错误?
- 我编写了以下代码来读取C++矩阵,然后打印其行和列.我收到此错误
- 我在C++中编写了一个方法来打印树类的预序,但它显示了分割错误
- 错误含义;以二进制形式打印数字
- 通过基类引用派生类后打印的错误值
- 如何在没有打印语句的情况下报告用户输入错误
- 为什么没有打印错误消息
- C++打印模板容器错误(错误:"运算符<<"的不明确重载)理解?
- 错误:变量或字段'PrintEntity'声明无效无效打印实体(实体 e);
- 将矢量的整数内容打印为字符串会导致分割错误
- 为什么我的C++代码在以下打印链表的代码片段中显示分段错误?
- C++ 添加编译器警告,以错误使用自定义打印/日志功能
- 尝试用纯 c 编程 arduino,得到以下错误:预期的"="、""、";",'asm'或"打印"之前的'__attribute__'|
- Python - 从 c++ DLL 错误打印值
- 使用std :: String ptr的错误打印std :: String
- 枚举类的GoogleTest测试错误打印
- 分段错误:打印动态数组时为 11
- Ustring错误(打印期间)