代码如下
#include<stdio.h>
int main()
{
int n,i,a,b,c,k,t,j;
while(~scanf("%d",&n))
{
b=0;c=0;
if(n==0)break;
k=n;
t=n;
a=n%10+n/10%10+n/100%10+n/1000;
while(n!=0)
{
i=n%16;
b=b+i;
n=n/16;
}
while(k!=0)
{
j=k%12;
c=c+j;
k=k/12;
}
if(a==b&&a==c)
{
printf("%d is a Sky Number.\n",t);
}
else
{
printf("%d is not a Sky Number.\n",t);
}
}
return 0;
}
这个题是十进制转十六进制,十进制转十二进制
enmmm我不会
然后我就去看题解了?
因为判断的是四位数嘛,所以要考虑
a=n%10+n/10%10+n/100%10+n/1000;
n%10是个位,n/10%10是十位,n/100%10是百位,n/1000是千位
然后把它们相加得到一个值;
while(n!=0)
{
i=n%16;
b=b+i;
n=n/16;
}
用这个转换成十六进制,最终得到的就是加起来的值
同理 转十二进制也是
while(k!=0)
{
j=k%12;
c=c+j;
k=k/12;
}