原创作品 转载请注明出处http://blog.csdn.net/always2015/article/details/45342315
这一道题呢说起来难也不难,首先是要看懂题目,题目意思是将一个位数为四位的十进制数的各个位上的数相加,再和与之相对应的十六进制、十二进制各个位上数相加的和相比较,三者想等的话就输出。再者就是整个代码结构的问题,代码尽量要简洁。我的代码里面各自一个while循环就搞定了。不必设太多的变量。一定要搞清楚十进制,十六进制,都是一样的道理,十二进制的各位数是怎么样算出来的,他们之间不过是求余和求商。注意最后比较的三个数的和不能写成dec_sum==hex_sum==duo_sum,有c语言基础的同学肯定知道为什么不能这样写。下面是我的AC代码,有疑问的话,请给我留言。
#include <iostream>
#include<stdio.h>
using namespace std;
int main(void)
{
int dec_sum=0,hex_sum=0,duo_sum=0,dec_temp,hex_temp,duo_temp;
for(int i=1000; i<10000; i++)
{
//计算十进制各位的和
dec_temp=i;
while(dec_temp!=0)
{
dec_sum+=dec_temp%10;
dec_temp/=10;
}
//计算16进制各位的和
hex_temp=i;
while(hex_temp!=0)
{
hex_sum+=hex_temp%16;
hex_temp/=16;
}
//计算12进制各位的和
duo_temp=i;
while(duo_temp!=0)
{
duo_sum+=duo_temp%12;
duo_temp/=12;
}
//三种方式的和都相等就输出,注意不能写成dec_sum==hex_sum==duo_sum
if(dec_sum==hex_sum&&hex_sum==duo_sum)
cout<<i<<endl;
//在最后必须重新清零
dec_sum=0;
hex_sum=0;
duo_sum=0;
}
return 0;
}