JHZRYS 发表于 2019-3-28 17:15:22

萌新求问C语言

#include "stdio.h"
#include "math.h"
void main()
{
        double a , b , c , x ;
                while ( x <= 999 )
                {
                        a = rand()%10; b = rand()%10; c = rand()%10;
                        x = a * 100 + b * 10 + c ;
                       
                 if (x = pow( a , 3 ) + pow( b , 3 ) + pow( c , 3) )
                        printf ("%d\n" , x );
                        continue;
                }
}


帮我看看哪里有问题,,,本来想找“水仙花数”的,结果输出三个零

Croper 发表于 2019-3-28 17:37:58

每一行都是问题


#include "stdio.h"               //引用库里的文件请使用<>
#include "math.h"
void main()
{
      double a , b , c , x ;      //这里为什么是double
                while ( x <= 999 )   //X的初始值呢?
                {
                        a = rand()%10; b = rand()%10; c = rand()%10;//你这是要干啥?随机搜寻1000次?问什么不用for呢
                        x = a * 100 + b * 10 + c ;                                  //所以你x到底是拿来干啥的?
                        
                     if (x = pow( a , 3 ) + pow( b , 3 ) + pow( c , 3) )   //这是个赋值语句,判断请用==
                        printf ("%d\n" , x );
                        continue;                                                         //continue是多余的
                }
}

Croper 发表于 2019-3-28 17:47:22

#include <stdio.h>
#include <math.h>

int main(){
        int i;
        for (i=100;i<1000;++i){
                int a=i/100;
                int b=i/10%10;
                int c=i%10;
               
                if (i==pow(a,3)+pow(b,3)+pow(c,3)){
                        printf("%d\n",i);
                }
        }
}

jackz007 发表于 2019-3-28 18:28:22

      整数比较最好不要使用 power(),因为它会带来误差。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(void)
{
      int d , i , k , sum                     ;
      for(i = 100 ; i < 1000 ; i ++) {
                sum = 0                         ;
                k = i                           ;
                while(k) {
                        d = k % 10            ;
                        k = k / 10            ;
                        sum += d * d * d      ;
                }
                if(sum == i) printf("%d\n" , i) ;
      }
}

JHZRYS 发表于 2019-3-29 07:45:31

Croper 发表于 2019-3-28 17:37
每一行都是问题

谢谢批评指正!

JHZRYS 发表于 2019-3-29 07:46:09

jackz007 发表于 2019-3-28 18:28
整数比较最好不要使用 power(),因为它会带来误差。

谢谢!

JHZRYS 发表于 2019-3-29 08:13:00

Croper 发表于 2019-3-28 17:47


好像不对诶,怎么把100到999所有数字都打印出来了

JHZRYS 发表于 2019-3-29 08:13:40

jackz007 发表于 2019-3-28 18:28
整数比较最好不要使用 power(),因为它会带来误差。

设错最佳答案了。。。

jackz007 发表于 2019-3-29 15:02:04

JHZRYS 发表于 2019-3-29 08:13
设错最佳答案了。。。

    兄弟,不要纠结,我们已经看到你的选择了{:5_109:}

Croper 发表于 2019-3-29 15:07:28

JHZRYS 发表于 2019-3-29 08:13
好像不对诶,怎么把100到999所有数字都打印出来了

多半是你抄错了
把你运行的程序贴出来

JHZRYS 发表于 2019-3-29 19:08:31

Croper 发表于 2019-3-29 15:07
多半是你抄错了
把你运行的程序贴出来

好吧没问题。。。{:5_108:}
页: [1]
查看完整版本: 萌新求问C语言