新手学C语言麻烦,求大侠解囊相助,不胜感激,多有麻烦度娘。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main (void)
{
int m,n;
printf("input m:");
scanf("%d",&m);
printf("input n:");
scanf("%d",&n);
int i=m,j=1;
int a=1,b,c=0,d;
for(i=m;i>=m||i<=n;i++){
for(j=1;i!=0;j++){

a=i%10;
i=i/10;
b=pow(a,3);
c=b+c;
}
if(c=i){
printf("%d",i);
}
}
system("pause");
return 0;
}
题目如下:输出m-n之间所有满足
此类型的数字 如 153=pow(1,3)+pow(5,3)+pow(3,3)

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main (void)

    int m,n; 
    printf("input m:"); 
    scanf("%d",&m); 
    
    printf("input n:"); 
    scanf("%d",&n); 
    
    int i=m;  
    
    for(i=m;i>=m&&i<=n;i++)//i要在m~n之间,故用&& 
    {  
         int a=1,b=i;//初始化移进循环 
         double c=0;//定义成双精度,与 pow返回值精度一致 
         while(b!=0)//改成while循环,j没有用 
         {          
                    a = b%10; //用b代替i,再循环体内部不改变i值 
                    b = b/10;
                    c = c+pow(a,3);   
         }  
          
         if(c==i)//改成== 
         {  
             printf("%d\n",i);  
         } 
    }    
    
    system("pause");
    return 0;
}

在你的基础上面改的,你存在问题我都改过了,可以运行了,注释部分是修改的

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-01
#include<stdio.h>
#include<math.h>
int main()
{
    int m,n,i,sum,tmp,pows;
    int d = 0;
    scanf("%d%d",&m,&n);
    if(m<100) m=100;//100以内没有
    for(i=m;i<=n;i++)
    {
        int a = i;
        sum = 0;
        pows = 0;
        while(a) {//计算位数
            tmp = a%10;
            a = a/10;
            ++pows;
        }
        a=i;
        while(a) {//计算和
            tmp = a%10;
            sum += pow(tmp, pows);
            a = a/10;
        }
        if(i == sum){
            printf("%d\n",i);   
            d++;
        }
    }
    if(d==0)
        printf("no");
    return 0;
     
}

 水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身。

本回答被网友采纳
第2个回答  2013-11-01

    C语言的逻辑等于是==,=是赋值

    C语言判断两个浮点数是否相等最好不要用逻辑等于运算,因为存在浮点误差

    判断水仙花数完全可以用整型:153=1*1*1+5*5*5+3*3*3,不必使用pow浮点运算

    参考程序

#include <stdio.h>

void main( void )

{

    short a, b, c, i;

    printf("水仙花数:");

    for(i=100; i<=999; i++)

    {

         a=i%10;          //个位

         b=i%100/10;   //十位

         c=i/100;          //百位

         if(i==a*a*a+b*b*b+c*c*c)

            printf("%5d",i);

    }

}

本回答被提问者采纳

Warning: Invalid argument supplied for foreach() in /www/wwwroot/www.t2y.org3v3b34/skin/templets/default/contents.html on line 47
相似回答
大家正在搜