| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1081 人关注过本帖
标题:求水仙花数
取消只看楼主 加入收藏
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
求水仙花数
程序代码:
    
#include<stdio.h>
int i,j,k,n;
while(i<=9){
        int z;
        z=i*i*i+j*j*j+k*k*k;
        n=i*100+j*10+k;
        k++;
        if(k==10){
            k=0;j++;}
        if(j==10){
            j=0;i++;}
        if(z==n){printf("%d\n",n);}

    } 

输出不了,好难过啊。我本意是想用所有的三位数(即n)和z比较。太难过了,这效率也太低了,这半天我居然还在这里打转,是我没有编程思维吗?我该怎么培养啊
搜索更多相关主题的帖子: 比较 int 效率 水仙花数 编程 
2022-02-19 10:51
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
收藏
得分:0 
回复 楼主 闲客一位
我终于搞明白了,要哭了。
程序代码:
#include <stdio.h>
#include<math.h>
main()//水仙花的输出要对所有三位数进行判断,所以关键在于如何输出所有的三位数。
//for和while很像,只不过for把while判断条件放在式2处,并将while循环一次产生的影响放到式3处。式1是前提预设。 
{
    int i=1,j=0,k=0,n;
    //法一:
    for(n=100;n<1000;n++)
    {
        i=n/100;
        j=(n-i*100)/10;
        k=n%10;
        if(n==i*i*i+j*j*j+k*k*k)
        printf("%6d",n);
    }
    printf("\n");
    //法二:
    for(i=1;i<=9;i++)
    {
        for(j=0;j<=9;j++)
        {
            for(k=0;k<=9;k++)
        {
            if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
            printf("%6d",i*100+j*10+k);
        }
        }
    } 
    printf("\n");
    //法三:            
     i=1;j=0;k=0;//因为前面法一法二运行后他们都不是初始值,所以要重新赋值。 
    while(i<=9){
        int z;
        z=i*i*i+j*j*j+k*k*k;
        n=i*100+j*10+k;
        k++;
        if(k==10){
            k=0;j++;
        }
        if(j==10){
            j=0;i++;}
        if(z==n){printf("%d\n",n);}

    } 
}
2022-02-19 20:12
闲客一位
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2022-2-4
收藏
得分:0 
回复 3楼 闲客一位
怪不得法三一直输出不了,我以后到哪都会记得初始化。初始化,英文输入,==
2022-02-19 20:17
快速回复:求水仙花数
数据加载中...
 
   



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

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