这一道题简单题,主要难点在于怎么得出各个进制数的每一位并且相加,最后做判断。因为在前面这样的体型做过很多了,几分钟就可以写出来。我的AC代码如下:
#include <iostream>
using namespace std;
int main()
{
int input_num,dec_num,hex_num,twe_num;
int total_dec_num,total_hex_num,total_twe_num;
while(cin>>input_num&&input_num)
{
//判断十进制
dec_num=input_num;
total_dec_num=0;
while(dec_num>=1)
{
total_dec_num+=dec_num%10;
dec_num=dec_num/10;
}
//判断十六进制
hex_num=input_num;
total_hex_num=0;
while(hex_num>=1)
{
total_hex_num+=hex_num%16;
hex_num=hex_num/16;
}
//先判断十进制和十六进制和是否相同,如果不相同则直接可以进入下一次输入判断
if(total_dec_num!=total_hex_num)
{
cout<<input_num<<" is not a Sky Number."<<endl;
continue;
}
else
{
//判断十二进制
twe_num=input_num;
total_twe_num=0;
while(twe_num>=1)
{
total_twe_num+=twe_num%12;
twe_num=twe_num/12;
}
if(total_dec_num==total_twe_num)
{
cout<<input_num<<" is a Sky Number."<<endl;
}
else
{
cout<<input_num<<" is not a Sky Number."<<endl;
}
}
}
return 0;
}
运行结果如下: