#include<stdio.h>
#include<string.h>
int sum16(int a)
{
int i,j,sum;
int s[10];
memset(s,0,sizeof(s));
for(i=0;;i++)
{
if(a==0)
break;
s[i]=a%16;
a/=16;
}
sum=0;
for(j=0;j<i;j++)
sum+=s[j];
return sum;
}
int sum12(int a)
{
int i,j,sum;
int s[10];
memset(s,0,sizeof(s));
for(i=0;;i++)
{
if(a==0)
break;
s[i]=a%12;
a/=12;
}
sum=0;
for(j=0;j<i;j++)
sum+=s[j];
return sum;
}
int sum10(int a)
{
int i,sum=0;
for(i=0;;i++)
{
sum+=a%10;
a/=10;
if(a==0)
break;
}
return sum;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
if(sum10(n)==sum12(n)&&sum10(n)==sum16(n))
printf("%d is a Sky Number.\n",n);
else
printf("%d is not a Sky Number.\n",n);
}
return 0;
}
#include<string.h>
int sum16(int a)
{
int i,j,sum;
int s[10];
memset(s,0,sizeof(s));
for(i=0;;i++)
{
if(a==0)
break;
s[i]=a%16;
a/=16;
}
sum=0;
for(j=0;j<i;j++)
sum+=s[j];
return sum;
}
int sum12(int a)
{
int i,j,sum;
int s[10];
memset(s,0,sizeof(s));
for(i=0;;i++)
{
if(a==0)
break;
s[i]=a%12;
a/=12;
}
sum=0;
for(j=0;j<i;j++)
sum+=s[j];
return sum;
}
int sum10(int a)
{
int i,sum=0;
for(i=0;;i++)
{
sum+=a%10;
a/=10;
if(a==0)
break;
}
return sum;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
if(sum10(n)==sum12(n)&&sum10(n)==sum16(n))
printf("%d is a Sky Number.\n",n);
else
printf("%d is not a Sky Number.\n",n);
}
return 0;
}
十六进制与十进制转换
本文介绍了一个C语言程序,该程序定义了用于计算一个整数在十进制、十二进制和十六进制下的各位数字之和的函数,并判断这些和是否相等,以确定输入的整数是否为“天空数”。
1万+

被折叠的 条评论
为什么被折叠?



