| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 17827 人关注过本帖, 1 人收藏
标题:判断输入的数据是否为水仙花数
只看楼主 加入收藏
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
结帖率:83.33%
收藏(1)
已结贴  问题点数:20 回复次数:14 
判断输入的数据是否为水仙花数
判断输入的数据是否为水仙花数,输出为0时结束。

所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153=1的三次方+5的三次方+3的三次方。

输入示例:
153
1124
370
237
0
输出示例:
yes
no
yes
no

我的代码如下,但是输入与输出并不符合要求,请打击帮忙看一下。

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
    int i, j, k, n;
    scanf ("%d",&n);
    while (n!=0)
    {
        i=n/100;//分解出百位
        j=n/10%10;//分解出十位
        k=n%10;//分解出各位
        if (i*100+j*10+k==i*i*i+j*j*j+k*k*k)
            printf ("yes\n");
        else
            printf ("no\n");
        scanf ("%d",&n);
    }
   
  system ("pause");
  return 0;
}

/*

153
yes
234
no
12345
no
370
yes
0
请按任意键继续. . .

*/
搜索更多相关主题的帖子: 水仙花 
2011-04-17 14:28
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:7 
程序代码:
#include <stdio.h>
#include <math.h>
void fun(int n)
{
    if(pow(n/100,3)+pow((n%100)/10,3)+pow(n%10,3) == n)
        printf("yes\n");
    else
    printf("no\n");
}
main()
{
    int a = 0;
    while(EOF != scanf("%d",&a))
        fun(a);
   
}


                                         
===========深入<----------------->浅出============
2011-04-17 14:44
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
1000较为特殊,但依旧不是水仙花数,所以代码中加上下面一句,比较完善

if (n>=1000||n<100)
    printf ("no\n");
2011-04-17 14:51
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 2楼 laoyang103
2# 的代码和我的几乎殊途同归,谢了
2011-04-17 14:53
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:7 
程序代码:
#include <stdio.h>
#include <math.h>

const char * is_narcissistic_p(int n) {
    int sum_cubic = 0, m;
    for (m = n; m > 0; m /= 10) {
        sum_cubic += (int) pow(m % 10, 3);
    }
    return sum_cubic == n ? "yes" : "no";
}

int main() {
    int n[100] = {0}, i, j;
    printf("Which numbers do you want to check for narcissisticibility?\n");
    for (scanf("%d", &i), j = 0; i != 0; scanf("%d", &i), j++) {
        n[j] = i;
    }
    for (i = 0; i < j; i++) {
        printf("%s\n", is_narcissistic_p(n[i]));
    }
    return 0;
}
2011-04-17 15:13
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 5楼 voidx
用Dev-cpp 编译时好像不通过,没有yes与no的输出
2011-04-18 12:12
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
啊,你的编译器命令没加 -lm吧。没关系,用下面的代码:

程序代码:
#include <stdio.h>

int cubic(int n) {
    return n * n * n;
}

 
const char * is_narcissistic_p(int n) {
    int sum_cubic = 0, m;
    for (m = n; m > 0; m /= 10) {
        sum_cubic += (int) cubic(m % 10);
    }
    return sum_cubic == n ? "yes" : "no";
}

int main() {
    int n[100] = {0}, i, j;
    printf("Which numbers do you want to check for narcissisticibility?\n");
    for (scanf("%d", &i), j = 0; i != 0; scanf("%d", &i), j++) {
        n[j] = i;
    }
    for (i = 0; i < j; i++) {
        printf("%s\n", is_narcissistic_p(n[i]));
    }
    return 0;
}


[ 本帖最后由 voidx 于 2011-4-18 13:52 编辑 ]
2011-04-18 12:20
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 7楼 voidx
这个正确,谢了
2011-04-18 18:13
certain
Rank: 2
等 级:论坛游民
帖 子:29
专家分:10
注 册:2011-4-14
收藏
得分:7 
程序代码:
#include <stdio.h>
void main()
{
int i,j,k,n;
printf("'water flower'number is:");
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出个位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
我写的,看看可以吗?

天行健|  淫荡成就梦想!
地势坤|  猥琐引领时尚!
2011-04-19 15:48
xdzsm
Rank: 2
等 级:论坛游民
帖 子:137
专家分:99
注 册:2010-10-26
收藏
得分:0 
回复 9楼 certain
自己运行一下啊……
这是输出:
'water flower'number is:
2011-04-19 23:19
快速回复:判断输入的数据是否为水仙花数
数据加载中...
 
   



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

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