c语言 求所有的水仙花数 为什么vc6++运行这个程序时会弹出停止运行的对话框。。。

#include<stdio.h>intnum(intn){inti,m=0;for(i=1;;i=i*10){if(n/i!=0)m=m+1;elsebreak;}re... #include<stdio.h>
int num(int n)
{
int i,m=0;
for(i=1;;i=i*10)
{
if(n/i!=0)
m=m+1;
else
break;
}
return m;
} //这个函数是用来求一个正整数的位数
void g( )
{
int num(int a);
int a,m,i,c,d=0,e=1;
for(a=100;a<=32000;a++)
{
m=num(a);
for(i=1;i<=m;i++)
{c=(a/e)%10;
d=d+c*c*c;
e=10*e;
}
if (d==a)
printf("%d",a);
}
}

int main(int argc, char* argv[])
{
void g( );
g();

return 0;
}
展开
 我来答
大眼瞪小眼LY
2012-04-14 · 超过16用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:51.2万
展开全部
你的d和e的值没有从新归还,d和e的值会越来越大后来就会出错了,你的for没运行一次就要还原
for(a=100;a<=32000;a++)
{
m=num(a);
for(i=1;i<=m;i++)
{c=(a/e)%10;
d=d+c*c*c;
e=10*e;
}
if (d==a)
printf("%d",a);
d=0;e=1; //加上就好了
}
追问
再问个问题:为什么我a的范围是100到32000,但是这个程序只能打印出3位数的水仙花数??即只能打印出153、370、371、407这四个水仙花数。。。。???
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sun_siliang
2012-04-14 · TA获得超过2.6万个赞
知道大有可为答主
回答量:9913
采纳率:100%
帮助的人:4568万
展开全部
#include<stdio.h>
int num(int n)
{
int i,m=0;
for(i=1;;i=i*10)
{
if(n/i!=0)
m=m+1;
else
break;
}
return m;
} //这个函数是用来求一个正整数的位数
void g( )
{
int num(int a);
int a,m,i,c,d,e;
for(a=100;a<=32000;a++)
{
m=num(a);
d=0; //d的初始化放在这儿。
e=1; //e的初始化放在这儿。
for(i=1;i<=m;i++)
{c=(a/e)%10;
d=d+c*c*c;
e=10*e;
}
if (d==a)
printf("%d ",a);
}
}

int main(int argc, char* argv[])
{
void g( );
g();
return 0;
}
追问
再问个问题:为什么我a的范围是100到32000,但是这个程序只能打印出3位数的水仙花数??即只能打印出153、370、371、407这四个水仙花数。。。。???
追答
因为四位数,五位数的符合条件的没有。程序中设定的条件是:这个数等于组成这个数的各位立方和,叫水仙花数。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sky0411125
2012-04-14
知道答主
回答量:51
采纳率:0%
帮助的人:13.5万
展开全部
呵呵,我看得有点繁多,下面这个怎样呢:
#include "stdio.h"
int main(void)
{
int i, digit, m, n, number, sum;
int repeat, ri;

scanf_s("%d",&repeat);
for(ri = 1; ri <= repeat; ri++){
scanf_s("%d%d", &m, &n);
printf("result:\n");

for(i=m;i<=n; i++){
sum=0;
number=i;
while (number){
digit =number %10;
sum =sum +digit *digit *digit ;
number = number /10;
}
if(i==sum)
printf("水仙花数为:%d\n",i );
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiang9988zh
2012-04-14 · 超过13用户采纳过TA的回答
知道答主
回答量:90
采纳率:0%
帮助的人:34.2万
展开全部
你把题目的具体要求和内容发下啊,你这个程序看起来就郁闷。
追问
题目就是:写一个判别水仙花数的函数,求出所有的水仙花数。

我已经能写出判别水仙花数的函数了,就是写不出来求所有水仙花数的函数。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式