河岸柳 发表于 2021-9-19 13:48:28

新手求助

为什么无论输入什么,程序既不运算也不输出答案?

Problem Description
一个有趣的四位数2992,这个数,它的十进制数,其四位数字之和为2+9+9+2=22,它的十六进制数BB0,其四位数字之和也为22,同时它的十二进制数表示1894,其四位数字之和也为22,那么现在请你帮忙来判断任何一个十进制的四位数,是不是Sky数吧。

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

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

Sample Input
2992
1234
0

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

这是我的代码#include<stdio.h>

int sky_judge1(int system,int num)
{
        int judge=0;
                while(num)
                {
                        judge+=num%system;
                        num=num/system;       
                }
               
                return judge;
}

bool sky_judge2(int num)
{
        int judge1=sky_judge1(num, 10);
        int judge2=sky_judge1(num, 12);
        int judge3=sky_judge1(num, 16);
       
        if(judge1==judge2&&judge1==judge3&&judge2==judge3)
        return true;
        else
        return false;
}

int main()
{
        int num;
        while(scanf("%d",&num)!=EOF)
        {
                if(num=0)
                {break;}
               
                if(sky_judge2(num))
                {printf("%d is a Sky Number\n",num);}
                else
                {printf("%d is not a Sky Number\n",num);}
        }
       
        return 0;
}

大马强 发表于 2021-9-19 13:48:29

你的if语句写错了 if(num=0) 直接给他赋值为零了

#include<stdio.h>

int sky_judge1(int system,int num)
{
      int judge=0;
                while(num)
                {
                        judge+=num%system;
                        num=num/system;      
                }
               
                return judge;
}

bool sky_judge2(int num)
{
      int judge1=sky_judge1(num, 10);
      int judge2=sky_judge1(num, 12);
      int judge3=sky_judge1(num, 16);
      
      if(judge1==judge2&&judge1==judge3&&judge2==judge3)
      return true;
      else
      return false;
}

int main()
{
      int num;
//      printf("%d",10%292) ;
      while(scanf("%d",&num)!=EOF)
      {
                if(num==0)
                {break;}
               
                if(sky_judge2(num))
                {printf("%d is a Sky Number\n",num);}
                else
                {printf("%d is not a Sky Number\n",num);}
      }
      
      return 0;
}

巴巴鲁 发表于 2021-9-19 14:22:50

#include<stdio.h>

int sky_judge1(int system,int num)
{
      int judge=0;
      // 你把输入的值和进制弄反了
      while(system)
      {
                judge+=system%num;
                system=system/num;      
      }
      

      return judge;
}

// 这里我把返回类型改了,我的Dev用bool会报错
int sky_judge2(int num)
{
      int judge1=sky_judge1(num, 10);
      int judge2=sky_judge1(num, 12);
      int judge3=sky_judge1(num, 16);
      
      if(judge1==judge2&&judge1==judge3&&judge2==judge3)
      return 1;
      else
      return 0;
}

int main()
{
      int num;
      while(scanf("%d",&num)!=EOF)
      {
   
                if(num==0) // 另外这里是==
                {break;}
               
                if(sky_judge2(num))
                {printf("%d is a Sky Number\n",num);}
                else
                {printf("%d is not a Sky Number\n",num);}
      }
      
      return 0;
}

河岸柳 发表于 2021-9-19 14:44:28

巴巴鲁 发表于 2021-9-19 14:22


感谢指正,但是二楼稍微早一点{:10_262:},不好意思

巴巴鲁 发表于 2021-9-19 17:27:54

河岸柳 发表于 2021-9-19 14:44
感谢指正,但是二楼稍微早一点,不好意思

没事,问题解决就好,过意不去给我两三鱼币也行{:10_256:}

大马强 发表于 2021-9-19 17:50:22

巴巴鲁 发表于 2021-9-19 14:22


.cpp的就不会报错

巴巴鲁 发表于 2021-9-19 19:51:48

大马强 发表于 2021-9-19 17:50
.cpp的就不会报错

噢噢,学到了,谢谢
页: [1]
查看完整版本: 新手求助