这个程序错在哪里?!请教!!!帮忙修改一下!

来源:百度知道 编辑:UC知道 时间:2024/06/30 14:46:44
输入两个正整数m和n(m>=1,n<=1000),输出m--n之间满足所有各位数的立方和等于它本身的数。要求调用并定义函数is(numer)判断numer的各位数字立方和是否等于它本身。
#include<stdio.h>
void is(int m,int m)
{
int m,n;
printf("Enter m,n:");
scanf("%d%d",&m,&n);
double power;
for(m=1;m<n;m++){
int a,b,c;
a=m/100;
b=(m/10)%10;
c=m%10;
if(m==pow(a,3)+pow(b,3)+pow(c,3))
printf("m=pow(%d,3)+pow(%d,3)+pow(%d,3)=%d",m,a,b,c);
}
}
#include <stdio.h>
int main(void)
{
void is(int,int);
int m,n;
double power;
printf("Enter two number: ");
scanf("%d%d",&m,&n);
is(m,n);
}
void is(int m,int n)
{
for(m=1;m<n;m++){
int a,b,c;
a=m/100;
b=(m/10)%10;
c=m%10;
if(m==pow(a,3)+pow(b,3)+pow(c,3))
printf("m=pow(%d,3)+pow(%d,3)+pow(%d,3)=%d",m,a,b,c);
}
}
我修改的有是什么问题呢?!还是有问题

算了 还是给你写一个吧 你大概是个新手 呵呵 慢慢学习吧

#include<stdio.h>

bool isnumber(int m)
{
int temp=m;
int sum1=1,sum2=0,i,k;
while(m!=0)
{

k=m%10;
sum1=1;
for(i=1;i<=3;++i)
sum1*=k;
sum2+=sum1;
m/=10;
}
if(sum2==temp) return true;
else return false;
}

void main()
{
int m,n;
printf("Enter m,n:");
scanf("%d%d",&m,&n);
for(int i=m;i<=n;++i)
if(isnumber(i))
printf("符合条件的有%d ",i);
}

我不想打击你, 不过你这程序几乎没对的地方。。。

第一个问题就是怎么让一个程序跑起来? 你没有main函数

第二个问题是 函数的参数是什么意思? 两个参数都叫m。 进去之后又定义了 int m,n。 然后又 scanf读入。。那要参数干什么用的啊?

然后 for 循环上来就 m=1 ,你m都赋值1了,之前scanf的也白读了

然后循环里面,题目并没说那些数都是3位数,你为什么就定义个a b c呢?
然后最后你输出的时候, printf里面参数给的顺序还错了。。

给你点建议,编程不是搭积木, 正确的语句拼凑在一起不一定就是正确的程序。当你写下一个语句的时候一定要清楚你自己是在做什么。 如果你想不清楚还是先去多看看书,看看别人写的小代码