#我是c++的菜鸟,我想来发文记录一下我的学习#
今天我在写zerogudge 的题目,a040(阿姆斯壮数)的时候发生了很诡异的事情,
当我执行的时候可怕的是就发生了!!
我输入:99 1000 //注解:搜寻99到1000的阿姆斯壮数。
程式输出:370 371 407//注解:99到1000的阿姆斯壮数。
What!! 什么鬼,153到哪里去了??
本因该输出:153 370 371 407的阿~
以下是我发现错误前的程式码
#include <iostream>#include <math.h>using namespace std;int get_length(int x){int leng=0;while(x){x/=10;leng++;}return leng;}int get_sum(int y){ int n=get_length(y); int sum=0; for(int i=n;i>0;i--) { int single=y/pow(10,i-1); single =single % 10; double singlePow=pow(single,n); sum=singlePow+sum; } return sum; }int main(){ int start; int end; int count=0; cin>>start; cin>>end; for(;start<=end;start++) { if(get_sum(start)==start) { cout<<start<<" "; count=count+1; } } if(count==0) { cout<<"none"<<endl; } }
不过后来我把有存pow()这个函式的型别从int改成double就解决这个问题了,
但是为什么会这样我还是不太清楚。
各位高手如有闲情雅致就请帮我解答吧~~