标题:谭浩强C语言课后一题,拜求正解。
只看楼主
bkzywx
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-2-28
结帖率:100%
已结贴  问题点数:2 回复次数:10 
谭浩强C语言课后一题,拜求正解。
题目:打印出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。例如:153是一个水仙花数,因为153=1^3+5^3+3^3。
我编的程序:#include<stdio.h>
#include<math.h>
int a,b,c,x;
void main()
{
    scanf("%d,%d,%d",a,b,c);
    x=(100*a+10*b+c);
    while(x>=100&&x<1000)
    {
        if(x==(pow(a,3)+pow(b,3)+pow(c,3)))
            printf("%d\n",x);
        else
            x++;
    }
调试没有问题,但是运行时会提示程序出现错误,立即结束程序。
现正迷茫中,拜求正解,先谢谢各位前辈!
搜索更多相关主题的帖子: 谭浩强 C语言 
2010-05-08 16:18
南国利剑
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:29
帖 子:1165
专家分:3536
注 册:2010-4-12
得分:2 
你的这个代码问题可能出在scanf("%d,%d,%d",a,b,c);
这句,改成这样scanf("%d%d%d",&a,&b,&c);
应该就可以了



南国利剑
2010-05-08 16:31
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
得分:0 
#include<stdio.h>
#include<math.h>
int a,b,c,x;
void main()
{
    scanf("%d,%d,%d",&a,&b,&c);//错这了
    x=100*a+10*b+c;
    while(x>=100 && x<1000)
    {
        if(x==(int)pow(a,3.0)+(int)pow(b,3.0)+(int)pow(c,3.0))
            printf("%d\n",x);
        else
            x++;
    }
}
2010-05-09 08:48
草狼
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:577
专家分:1040
注 册:2010-4-6
得分:0 
或用这白痴代码
#include<Stdio.h>
#include <stdlib.h>
int main()
{
int n;
int sum1=0,sum2=0,sum3=0,sum4=0,sum5=0,sum6=0,sum7=0,sum8=0,sum9=0,sum10=0;
int i,j,a,b;
for(a=1,b=4,i=1;i<=4;i++)
{
for(j=1;j<=4;j++)
{
scanf("%d",&n);
printf("%d",n);
if(j!=4) printf(" ");
if(i==1)
{
sum1+=n;
}
else if(i==2)
{
sum2+=n;
}
else if(i==3)
{
sum3+=n;
}
else if(i==4)
{
sum4+=n;
}
if(j==1)
{
sum5+=n;
}
else if(j==2)
{
sum6+=n;
}
else if(j==3)
{
sum7+=n;
}
else if(j==4)
{
sum8+=n;
}
if(j==a)
{
sum9+=n;
}
if(j==b)
{
sum10+=n;
}
}
printf("\n");
a++;
b--;
}
printf("hang:%d %d %d %d\n",sum1,sum2,sum3,sum4);
printf("lie:%d %d %d %d\n",sum5,sum6,sum7,sum8);
printf("duijiaoxian:%d %d\n",sum9,sum10);
system("pause");
return 0;
}
2010-05-09 08:58
lucky563591
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:765
专家分:2103
注 册:2009-11-18
得分:0 
不一样的代码运行效率果然不一样
2010-05-09 09:07
xin3120
Rank: 1
来 自:东北
等 级:新手上路
帖 子:8
专家分:4
注 册:2010-4-21
得分:0 
1 ,2 楼正解。。。  你scanf 语句没有接受地址。。。你也可以在scanf上加个  printf("input a,b,c:")就可以在操控界面直接出入数和接收了- -我也是新手不知道有没有错- -

学习 学习 收师傅!
2010-05-09 09:20
xueyuhanhai
Rank: 4
等 级:业余侠客
帖 子:90
专家分:238
注 册:2010-4-5
得分:0 
#include<stdio.h>
#include<math.h>
int a,b,c,x;
void main()
{
    printf("请输入三个数:");
    scanf("%d,%d,%d",&a,&b,&c);//这里少了&
    x=100*a+10*b+c;
    if(x>=100 && x<1000)
    {
        if(x==(int)pow(a,3.0)+(int)pow(b,3.0)+(int)pow(c,3.0))
            printf("%d\n",x);
        else
            x++;
                  
    }
    else
        printf("不是三位数!");
    printf("\n");

}

楼主的代码不是特别的好,我改了一下。你用while循环,满足条件的做循环,否则的话什么也不做。好像不太好。
改用if开关语句做了一下提示。我用的是VC++6.0做的。呵呵。。。
2010-05-09 11:54
冥卫
Rank: 8Rank: 8
来 自:深山老林
等 级:蝙蝠侠
帖 子:280
专家分:772
注 册:2010-4-20
得分:0 
欢迎所有喜欢和想学C语言的朋友加入、、、Q群96227867
不是打广告,纯属学习之用
2010-05-09 13:59
灰色代言
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-05-09 14:10
棚户区
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2010-5-9
得分:0 
#include<stdio.h>

int main()
{
    int i,a,b,c;
    for(i=100;i<=999;i++)
    {
        a=i/100;
        b=(i-100*a)/10;
        c=i%10;
        if(i==pow(a,3)+pow(b,3)+pow(c,3))
            printf("%d\n",i);
    }
        return 0;
}

这样好像也可以吧,,你的窝咋么运行部来???
2010-05-09 14:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-305844-1-1.html




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

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