请问这段水仙花数程序有什么问题

问题描述

请问这段水仙花数程序有什么问题
#include
void main()
{
int a b de=0;
for (a = 1;;a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d != 0);
if (a==e)
printf("" %dn""e);
}
}
大神求解答
诊断程序在VS2013中没有警告或错误,但是执行时弹出框只是光标在闪烁,没有其他任何数字或字母
请问这段程序有什么问题

解决方案

do..while里面有问题啊。e得到的不是三个位数的立方。

解决方案二:
a=100后d=100/10=0的所以下一次又从do{}开始运行了第二次你的a=0;而d=0/10=0;所以就会永远执行do{}while()循环了。

如果回答对你有帮助请采纳

解决方案三:
#include
void main()
{
int a b de=0;
for (a = 100;a<1000;a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d = 0); //这里应该是“==”
if (a==e)
printf("" %dn""e);
}
}

解决方案四:
很明显的错误啊,判断符号==成了赋值符号=

解决方案五:
#include
void main()
{
int a b d e = 0;
for (a = 100; ; a++)
{
do
{
b = a % 10;
d = a / 10;
e = e + b*b*b;
a = d;
} while (d != 0);
if (a == e)
printf("" %dn"" e);
诊断程序在VS2013中没有警告或错误,但是执行时弹出框只是光标在闪烁,没有其他任何数字或字母

解决方案六:
参考这个里面的代码实现:http://jingyan.baidu.com/article/f71d60377cd8601ab641d1e8.html

解决方案七:

 #include<stdio.h>int main(){    int a be=0;    for (a = 100;a<1000;a++)    {b=a;         e = 0;        while (b > 0)        {                    e += (b % 10) * (b % 10) * (b % 10);                    b /= 10;        }        if (a==e)            printf("" %dn""e);    }}

解决方案八:
http://codepad.org/SHGTLN3T

在线运行通过,结果
153
370
371
407

解决方案九:
水仙花代码

解决方案十:
#include
#include
void main()
{
int ijkn;
printf(""'water flower'number is:"");
for(n=100;n<10000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(n==i*i*i+j*j*j+k*k*k)
{
printf(""%-5d""n);
}
}
printf(""n"");
}

时间: 2016-02-08
Tags: 程序

请问这段水仙花数程序有什么问题的相关文章

c语言-C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写。

问题描述 C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. C语言用递归函数输出1000以内的水仙花数,不得使用循环,请问怎么写. 解决方案 #include <stdio.h> void fun(int n) { if(n<100 || n>1000) return; int a,b,c; c=n%10; b=n/10%10; a=n/100%10; if(a*a*a+b*b*b+c*c*c == n) printf("%dn",n);

面向对象-请问这段程序的输出是什么 为什么

问题描述 请问这段程序的输出是什么 为什么 public class Test { public static void main(String[] args) { Animal a = new Dog(); a.syaHi(); Animal b = new Bulldog(); b.syaHi(); Dog dog = (Dog)b; dog.syaHi(); check(dog); Bulldog bulldog = (Bulldog)b; check(bulldog); } public

请问这段代码为什么输出null,求大神解答程序执行的顺序?

问题描述 请问这段代码为什么输出null,求大神解答程序执行的顺序? public class xieCheng { private String baseName="Base"; public xieCheng(){ this.callName(); } public void callName(){ System.out.println(baseName); } } public class Sub extends xieCheng { private String baseNam

opencv c++-请问这段程序是什么意思呢?或者有没有大神帮我注释一下啊,跪谢啊!

问题描述 请问这段程序是什么意思呢?或者有没有大神帮我注释一下啊,跪谢啊! if(f) { if(!fgets(filename, (int)sizeof(_filename)-2, f)) break; //while(*filename && isspace(*filename)) // ++filename; if(filename[0] == '#') break; //continue; int l = (int)strlen(filename); while(l > 0

帮忙完善一个非常简单的java 程序 水仙花数

问题描述 我对java刚入门帮忙看看这个程序运行不了有错误啊大家帮忙啊.水仙花数输出importjava.io.*;publicclassinputClass{publicstaticvoidmain(Stringargs[]){inta=0,b=0,c=0;for(i=100;i<1000;i++)a=i/100;b=(i/10)%10;c=i%10;if(a*a*a+b*b*b+c*c*c==i)System.out.println(i);}}改下也行重新告诉我一个更简单的也行 解决方案 解

水仙花数的vfp实现

水仙花数的实现是一个比较经典的算法题,今天我们首先在vfp中来实现它. 首先我们了解一下什么是"水仙花数".所谓水仙花数是指一个n位数,其各位数字立方和等于该数本身的值,例如:153=13+53+33 ,所以153是一个水仙花数. 我们来做一个简单点儿的:求解3位数的水仙花数,即100至999之间的水仙花数.很明显这个程序需要使用循环,并且从水仙花数的概念可知,其重点是求解出循环变量当前值的各位数字的值.剩下的工作就简单了,把求解出的各位数字的立方和与循环变量当前值进行比较,如果相等则

输出100-1000之间所有的“水仙花数”

查看全套"c语言习题集" 题目: 打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方. 1.程序分析: 利用for循环控制100-999个数,每个数分解出个位,十位,百位. 2.程序源代码: #include "stdio.h"#include "conio.h"main(

语言 水仙花数算法-水仙花数代码如何减短运行时间

问题描述 水仙花数代码如何减短运行时间 水仙花数是指一个N位正整数(N>=3),它的每个位上的数字的N次幂之和等于它本身.例 如:153 = 13 + 53+ 33. 本题要求编写程序,计算所有N位水仙花数. 输入格式: 输入在一行中给出一个正整数N(3<=N<=7). 输出格式: 按递增顺序输出所有N位水仙花数,每个数字占一行. 输入样例:3 输出样例:153 370 371 407 我的代码运行起来超时;我知道可能是n=7时循环次数太多造成的.有什么办法解决呢 include inc

水仙花数&amp;amp;素数&amp;amp;质因数分解的C语言实现

最近,我翻了一下之前的C语言教材,看了三个有意思的小程序,包括:寻找"水仙花数".判断某数是否为素数.对一个数进行质因数分解.我想把这三个东西放到一个程序中,便写下了此文.   算法步骤 1. 寻找"水仙花数". "水仙花数"是指一个三位数,其各位数字的立方和等于该数本身.例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方.   2. 判断某数是否为素数. 素数是指只能被1和它本身整除的数,判断一个