鱼C论坛

 找回密码
 立即注册
查看: 1965|回复: 7

[已解决]水仙花数的程序有问题。帮忙指点。谢谢

[复制链接]
发表于 2015-10-4 21:40:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/


#include <stdio.h>

void main(void)
{
        int i,j;
        int sum=0;
        for (i=100;i<1000;i++)           //三位数从100-1000内循环。
                for(j=1;j<4;j++)
                {
                        sum+=(i%10)*(i%10)*(i%10);
                                i=i/10;
                }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                        printf("%d",i);

        return;
}
最佳答案
2015-10-4 22:14:44
       for (i=100;i<1000;i++)           //三位数从100-1000内循环。
       {//加上{
                sum = 0;//加上这句
                for(j=1;j<4;j++)
                {
                        sum+=(i%10)*(i%10)*(i%10);
                                i=i/10;
                }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                        printf("%d",i);
改为
       for (i=100;i<1000;i++)           //三位数从100-1000内循环。
       {//加上{
                sum= 0;//加上这句
                for(j=1;j<4;j++)
                {
                        sum+=(i%10)*(i%10)*(i%10);
                                i=i/10;
                }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                        printf("%d",i);
        }//加上}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-4 22:14:44 | 显示全部楼层    本楼为最佳答案   
       for (i=100;i<1000;i++)           //三位数从100-1000内循环。
       {//加上{
                sum = 0;//加上这句
                for(j=1;j<4;j++)
                {
                        sum+=(i%10)*(i%10)*(i%10);
                                i=i/10;
                }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                        printf("%d",i);
改为
       for (i=100;i<1000;i++)           //三位数从100-1000内循环。
       {//加上{
                sum= 0;//加上这句
                for(j=1;j<4;j++)
                {
                        sum+=(i%10)*(i%10)*(i%10);
                                i=i/10;
                }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                        printf("%d",i);
        }//加上}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-4 23:21:26 | 显示全部楼层
#include <stdio.h>
void main()
{
        int i,j;
        for (i = 100; i <1000; i++)
        {
                int sum=0;
                for (j = 1; j < 4; j++)           //循环三次//      
                {
                        int h=i%10;                   //个位数//
                        int t=(i%100)/10;             //十位数//
                        int k=i/100;                  //百位数//
                        sum =h*h*h+t*t*t+k*k*k;
                        }
                if (i == sum)
                        printf("%d\n", i);
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-5 07:51:12 | 显示全部楼层
/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/


#include <stdio.h>

void main(void)
{
         int i,j;
         int sum=0;
         for (i=100;i<1000;i++)           //三位数从100-1000内循环。
                for(j=1;j<4;j++)
                 {
                         sum+=(i%10)*(i%10)*(i%10);
                                 i=i/10;
                 }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                                                        请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小    100倍的i.        
                        printf("%d",i);

         return;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-5 12:13:11 | 显示全部楼层
/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/


#include <stdio.h>

void main(void)
{
          int i,j;
          int sum=0;
          for (i=100;i<1000;i++)           //三位数从100-1000内循环。这里的 i是经过i/10的几个循环后变成了0。i++最后变成了1.再进入循环就不对了。
                for(j=1;j<4;j++)
                  {
                          sum+=(i%10)*(i%10)*(i%10);
                                  i=i/10;
                  }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                                                        请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小    100倍的i.        
                        printf("%d",i);

          return;

研究了一上午,问题终于找出。但解决这个问题的方法还没找到。
自以为自已写的没问题。但还是一堆的问题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-5 12:27:04 | 显示全部楼层
/*打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,
其各位数字立方和等于该数本身。153=1*1*1+5*5*5+3*3*3
例如 153是一个水仙花数,*/


#include <stdio.h>

void main(void)
{
           int i,j;
          int t;
           int sum=0;
           for (i=100;i<1000;i++)           //三位数从100-1000内循环。这里的 i是经过i/10的几个循环后变成了0。i++最后变成了1.再进入循环就不对了。
                 t=i;
                for(j=1;j<4;j++)
                   {
                           sum+=(t%10)*(t%10)*(t%10);
                                  t=t/10;
                   }                                       //循环三次,把水仙花数求出。

                if (i==sum)                    //如果水仙花数和本身相等,则打印出。
                                                        请问下此处的i 是一层FOR循环的i,还是二层FOR循环缩小    100倍的i.        
                         printf("%d",i);

           return;
                                         加了个变量t,问题解决了,谢谢大家。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-5 13:25:22 | 显示全部楼层

我也是这么想的,,不过i的值会改变吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-10-7 17:23:01 | 显示全部楼层
啊,这种有问题大家一起讨论的感觉真是好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-19 22:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表