轩攻re 发表于 2020-1-27 10:20:08

很短的问题的求助

#include<stdio.h>

int main()

{int a=1,b=1,c=1;

double sm=(a*a*a)+(b*b*b)+(c*c*c),tn=a*100+b*10+c;

for(;a<10;a++)

{

for(;b<10;b++)

{

for(;c<10;c++)

{sm=(a*a*a)+(b*b*b)+(c*c*c);

tn=a*100+b*10+c;

if(sm==tn)

printf("%d\n",(sm));


}

}

}


return 0;

}

没有error,执行结果是一次’\n'

轩攻re 发表于 2020-1-27 10:36:07

自顶

EthanHsiung 发表于 2020-1-27 10:55:09

for循环里面给a,b,c赋初值。
可能是因为在第一个for循环里面,b和c没有赋值,导致循环没有开启

最后的魁拔 发表于 2020-1-27 11:07:52

应该是没有这样的数,a,b,c都在变,sm和tn都在变,值不定
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a=1,b=1,c=1;
    double sm = (a*a*a)+(b*b*b)+(c*c*c),tn = a*100+b*10+c;
    int flag=0;
    for(;a<10;a++)
    {
      for(;b<10;b++)
      {
            for(;c<10;c++)
            {
                sm = (a*a*a)+(b*b*b)+(c*c*c);
                tn = a*100+b*10+c;
                if(sm==tn)
                {
                  printf("%d\n",sm);
                  flag = 1;
                  //break;
                }

            }
      }
    }
    if(!flag)
    {
      printf("没有这样的数\n");
    }

    system("pause");
    return 0;
}

输出
没有这样的数

seeyou_shj 发表于 2020-1-27 11:11:31

楼上用的什么编译器?代码和运行结果在一个界面啊

轩攻re 发表于 2020-1-27 11:27:56

最后的魁拔 发表于 2020-1-27 11:07
应该是没有这样的数,a,b,c都在变,sm和tn都在变,值不定

题目要求输出1000以下所有符合a+b+c=a*100+b*10+c的数,不知道咋改

轩攻re 发表于 2020-1-27 11:31:36

最后的魁拔 发表于 2020-1-27 11:07
应该是没有这样的数,a,b,c都在变,sm和tn都在变,值不定

多级循环体里不支持变量在等式左右同时变换吗?我现在感觉似乎是这样

最后的魁拔 发表于 2020-1-27 11:35:24

轩攻re 发表于 2020-1-27 11:27
题目要求输出1000以下所有符合a+b+c=a*100+b*10+c的数,不知道咋改

那你这个到底是a,b,c的立方和还是就a,b,c的和啊

轩攻re 发表于 2020-1-27 12:35:41

最后的魁拔 发表于 2020-1-27 11:35
那你这个到底是a,b,c的立方和还是就a,b,c的和啊

立方和

最后的魁拔 发表于 2020-1-27 14:00:00

能把原题发一下吗

轩攻re 发表于 2020-1-27 15:03:51

最后的魁拔 发表于 2020-1-27 14:00
能把原题发一下吗

假设一个数例如135,135=1+5+3,这种数叫完数。求1000以内所有完数

最后的魁拔 发表于 2020-1-27 15:24:49

轩攻re 发表于 2020-1-27 15:03
假设一个数例如135,135=1+5+3,这种数叫完数。求1000以内所有完数

这个不就是水仙花数吗?

chxchxkkk 发表于 2020-1-28 15:07:03

#include <stdio.h>
int main()
{
        int a,b,c;
        int i;
        printf("1000以内的水仙花数有:\n");
        for(i=100; i<1000; i++)
        {
                a = i % 10; //分解出个位
                b = (i / 10) % 10; //分解出十位
                c = i / 100; //分解出百位

                //判断三个数的立方数和是否等该数本身,若是就打印出来
                if(a * a * a + b * b * b + c * c * c == i)
                        printf("%d\t\n", i);
        }
        return 0;
}
很简洁的程序被你整的那么复杂
页: [1]
查看完整版本: 很短的问题的求助