编写一个求水仙花数的函数,求3位正整数的全部水仙花数中的次大值。

u013096814 2013-12-09 09:17:46
#include <STDIO.H>
#include <MATH.H> //预处理
\\获得水仙花数
void getbaby(int nums)
{

int number1,number10,number100,max=0;
number100=nums/100;
number10=nums/10%10;
number1=nums%10;

if (nums==pow(number1,3)+pow(number10,3)+pow(number100,3))

{
printf("%d\t",nums);

}
}
//主函数
main()
{ int nums=100,max2,max=0;
printf("100到999的次大 水仙花数: ");
for (;nums<1000;nums++)
{
getbaby(nums);
if (max<nums)
{
max2=max;
max=nums;
}

}
printf("%d ",max2);
printf("\n ");

}
为什么次大数字输出是998。。。我要输出水仙花数的。。。次大数。
...全文
1281 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mr. Code 2013-12-09
  • 打赏
  • 举报
回复
引用
引用 3 楼 KenZhang1031 的回复: 而且从999开始往100求,求到第二个水仙花数就是你要的次大数。比从100到999查效率好吧? 这个应该没什么关系吧。反正就4个数。
不是4个数的问题,从100算到999,要算满900次。反过来,如果371是你要的次大数,那么你可以少算272次。
u013096814 2013-12-09
  • 打赏
  • 举报
回复
引用 2 楼 KenZhang1031 的回复:
超明显错误的地方,你的getbaby(nums)函数要有返回值,如果nums是水仙花数,返回true,然后你才能给max2=max,max=nums。如果是false,就不该赋值。你的程序每次都赋值,得到的次大数当然是998了。
做出来了,谢啦
Mr. Code 2013-12-09
  • 打赏
  • 举报
回复
#include <STDIO.H>   
#include <MATH.H>                               //预处理
\\获得水仙花数
bool getbaby(int nums)
{	

int number1,number10,number100,max=0;
number100=nums/100;
number10=nums/10%10;
number1=nums%10;

if (nums==pow(number1,3)+pow(number10,3)+pow(number100,3))

{
printf("%d\t",nums);
return true;
}
else
{
return false;
}
}
//主函数
main()
{	int nums=100,max2,max=0;
printf("100到999的次大 水仙花数:   ");
for (;nums<1000;nums++)
{
if(getbaby(nums))
{
if (max<nums)
{	
max2=max;
max=nums;
}
}
}
printf("%d ",max2);
printf("\n ");

}
u013096814 2013-12-09
  • 打赏
  • 举报
回复
引用 3 楼 KenZhang1031 的回复:
而且从999开始往100求,求到第二个水仙花数就是你要的次大数。比从100到999查效率好吧?
这个应该没什么关系吧。反正就4个数。
u013096814 2013-12-09
  • 打赏
  • 举报
回复
引用 2 楼 KenZhang1031 的回复:
超明显错误的地方,你的getbaby(nums)函数要有返回值,如果nums是水仙花数,返回true,然后你才能给max2=max,max=nums。如果是false,就不该赋值。你的程序每次都赋值,得到的次大数当然是998了。
具体要怎么改?我大一新生。。。。研究一个晚上了。。。
Mr. Code 2013-12-09
  • 打赏
  • 举报
回复
而且从999开始往100求,求到第二个水仙花数就是你要的次大数。比从100到999查效率好吧?
Mr. Code 2013-12-09
  • 打赏
  • 举报
回复
超明显错误的地方,你的getbaby(nums)函数要有返回值,如果nums是水仙花数,返回true,然后你才能给max2=max,max=nums。如果是false,就不该赋值。你的程序每次都赋值,得到的次大数当然是998了。
u013096814 2013-12-09
  • 打赏
  • 举报
回复
定一个,求救

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧