| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 994 人关注过本帖
标题:哪里错了
取消只看楼主 加入收藏
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
结帖率:92.86%
收藏
已结贴  问题点数:5 回复次数:2 
哪里错了
问题描述

Sky从小喜欢奇特的东西,而且天生对数字特别敏感,一次偶然的机会,他发现了一个有趣的四位数 2992,这个数,它的十进制数表示,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示 1894,其四位数字之和也为22,啊哈,真是巧啊。Sky非常喜欢这种四位数,由于他的发现,所以这里我们命名其为Sky数。但是要判断这样的数还是有点麻烦啊,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。
 

输入

输入含有一些四位正整数,如果为0,则输入结束。

输出

若n为Sky数,则输出“#n is a Sky Number.”,否则输出“#n is not a Sky Number.”。每个结果占一行。注意:#n表示所读入的n值。

输入样例

2992
1234
0

输出样例

2992 is a Sky Number.
1234 is not a Sky Number.

代码如下:
#include<stdio.h>
int main()
{
    int b[4],c[4];
    int d,e,f,g,i,n,h;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
            break;
        h=n;
        d=e=f=g=0;
        d=n/1000+(n%1000/100)+(n%1000%100/10)+(n%1000%100%10/1);
        for(i=0;n!=0 && i<4;i++)
        {
            b[i]=n%16;
            n=n/16;
        }
        n=h;
        for(i=0;n!=0 && i<4;i++)
        {
            c[i]=n%12;
            n=n/12;
        }
        for(i=0;i<4;i++)
        {
            f+=b[i];
            g+=c[i];
        }
        if(d==f==g)
        {
            printf("%d is a Sky Number.\n",h);
        }
        else
        {
            printf("%d is not a Sky Number.\n",h);
        }
    }
    return 0;
}
搜索更多相关主题的帖子: 数字 东西 十六进制 二进制 十进制 
2009-11-06 21:10
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
#include<stdio.h>
int main()
{
    int b[4],c[4];
    int d,f,g,i,n,h;
    while(scanf("%d",&n)!=EOF)
    {
        if(n==0)
        {
            break;
        }
        h=n;
        d=f=g=0;
        d=n/1000+(n%1000/100)+(n%1000%100/10)+(n%1000%100%10/1);
        for(i=0;n!=0 && i<4;i++)
        {
            b[i]=n%16;
            n=n/16;
        }
        n=h;
        for(i=0;n!=0 && i<4;i++)
        {
            c[i]=n%12;
            n=n/12;
        }
        for(i=0;i<3;i++)
            f+=b[i];
        for(i=0;i<4;i++)
        {
            g+=c[i];
        }
        if(d==f&&d==g)
        {
            printf("%d is a Sky Number.\n",h);
        }
        else
        {
            printf("%d is not a Sky Number.\n",h);
        }
    }
    return 0;
}

我这样交上去,为什么答案错误?

学无止境!
2009-11-07 18:04
liucs116
Rank: 2
等 级:论坛游民
帖 子:130
专家分:29
注 册:2009-11-4
收藏
得分:0 
不好意思我知道哪错了,数组长度短了。变成b[1000],c[1000]就对了

学无止境!
2009-11-07 18:50
快速回复:哪里错了
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.047275 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved