| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 428 人关注过本帖
标题:求助,为什么没有输出
只看楼主 加入收藏
空城为你
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-20
收藏
 问题点数:0 回复次数:12 
求助,为什么没有输出
程序代码:
#include<stdio.h>
main()
{
int a,b1,b2,b3,i;
a=100;
for(i=0;i<900;i++)
{

 a+=i;

 b1=a/100;

 b2=(a%100)/10;

 b3=a%10;

 if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)

 printf("%d",a);
}
}

题目要求输出所有三位的水仙花数,为什么没有输出呢?求大神
2012-03-21 14:23
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
这是我写的,你参考下。你的取每一位的值有错误啊。
程序代码:
#include<stdio.h>
int main()
{
int a,b1,b2,b3,c;
//a=100;
for(a=100;a<999;a++)
{
    b1 = a / 100;
    b2 = (a - b1 * 100) / 10;
    b3 = a - b1 * 100 - b2 * 10;
    c = b1 * b1 * b1 + b2 * b2 * b2 + b3 * b3 * b3;
    if ( a == c){
            printf("\n%d",c);
    }

    
}
}

。。。!!!)))000
2012-03-21 20:17
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
a+=i;这句是不对的。
程序代码:
#include<stdio.h>
main()
{
int a,b1,b2,b3,i;
a=100;
for(i=0;i<900;i++)
{
a+=i;  //这里使用+i是不对的,这么写是每次让a加上i,而每一次i的值是在增加的,第一次i是1,第二次i是2,
//这时候相当于给a加上了2,再循环一次i就变成了3,再执行这句a+=i实际上市a=a+3,以此类推。所以,
//直接把水仙花数跳过了。最终没有输出 
b1=a/100;
b2=(a%100)/10;
b3=a%10;
if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)
printf("%d",a);
}
}

。。。!!!)))000
2012-03-21 20:30
木头lbj
Rank: 7Rank: 7Rank: 7
来 自:黄山
等 级:黑侠
威 望:1
帖 子:269
专家分:527
注 册:2010-11-6
收藏
得分:0 
更正一下,你的第一次的求位数是正确的,按照你的想法可以改成这样。
程序代码:
#include<stdio.h>
main()
{
int a,b1,b2,b3;
a=100;
while(a < 999){
    a+=1;
    b1=a/100;
    b2=(a%100)/10;
    b3=a%10;
    if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)\
    printf("%d  ",a);
}
}

。。。!!!)))000
2012-03-21 20:33
不哭5死神
Rank: 2
等 级:论坛游民
帖 子:42
专家分:74
注 册:2011-4-11
收藏
得分:0 
错误1、a+=i;改正a++;
错误2、b2=(a% 100 )/ 10 ;
改正b2=a/ 10%10 ;
2012-03-21 21:51
CPTcpt
Rank: 2
等 级:论坛游民
帖 子:18
专家分:38
注 册:2011-11-20
收藏
得分:0 
参考一下这个程序
#include <stdio.h>
int main()
 {
  int i,j,k,n;
  printf("水仙花数是 ");
  for (n=100;n<1000;n++)
   {
    i=n/100;
    j=n/10-i*10;
    k=n%10;
    if (n==i*i*i + j*j*j + k*k*k)
      printf("%d ",n);
   }
  printf("\n");
  return 0;
  }
2012-03-22 00:10
小赵q1
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:492
专家分:777
注 册:2011-8-26
收藏
得分:0 
电脑还没有运算到输出那个地方,所以没有输出。出现这种情况多是逻辑错误了,或者在某个句子里面死循环了。
2012-03-22 06:56
lmxy1990
Rank: 2
等 级:论坛游民
帖 子:21
专家分:23
注 册:2011-12-19
收藏
得分:0 
回复 3楼 木头lbj
是对的,可以那样写。一般都那样写的
2012-03-22 07:46
lmxy1990
Rank: 2
等 级:论坛游民
帖 子:21
专家分:23
注 册:2011-12-19
收藏
得分:0 
我想知道,这程序干嘛的?
重点是这句1:if(a==b1*b1*b1+b2*b2*b2+b3*b3*b3)
printf("%d",a);
按你的要求,只有当if为真的时候,它才输出。
2012-03-22 07:48
苦寒
Rank: 2
等 级:论坛游民
帖 子:18
专家分:55
注 册:2012-3-22
收藏
得分:0 
不死哭神:“a+=i;改正a++; ” 这个修改表面看正确,但不符合题意,将100排除在外了。

这样修改就可以了。
#include "stdio.h"
main()
{
    int i,b1,b2,b3;
    for(i=100;i<1000;i++)
    {        
        b1=i/100;
        b2=(i%100)/10;
        b3=i%10;
        if(i==b1*b1*b1+b2*b2*b2+b3*b3*b3)
            printf("%d\n",i);
    }
}
2012-03-22 10:23
快速回复:求助,为什么没有输出
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018732 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved