u012200242
asdsa3a
采纳率100%
2021-04-22 20:07 阅读 26

初学C语言遇到问题,求解答

使用函数输出水仙花数:输入两个正整数m和n (100<=m<=n <1 000),输出间(m, n)内所有的水仙花数。所谓水仙花数是指一个n位正整数(n>=3),它的各位数的n次方之和等于它本身。调用函数nareissistc(number)判断数量是否为水仙花数,是则返回1,否则返回0;定义和调用函数print-n (m, n)按从小到大的顺序输出区间(m, n)内所有的水仙花数。

#include<Stdio.h>
int narcissistic(int num);
void print_n(int m,int n);
int main()
{
    int m,n,c;
    printf("Enter m,n:");
    scanf("%d%d",&m,&n);
    print_n(m,n);
    return 0;
}
void print_n(int m,int n)
{
    int i;
    for(i=m;i<=n;i++){
        if(narcissistic(i)==0){
            printf("%d",i);
        }
    }
    return;
}
int narcissistic(int num)
{
    int num_,a,sum,count;
    num_=num;
    while(num_!=0)
    {
        a=num_%10;
        sum+=a*a*a;
        num_/=10;
    }
    if(sum==num){
        return 1;
    }else{
        return 0;    
}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    qq_46523755 正在学C++ 2021-04-22 20:17
    #include<Stdio.h>
    int narcissistic(int num);
    void print_n(int m,int n);
    int main()
    {
        int m,n;                        //多了个无用参数c
        printf("Enter m,n:");
        scanf("%d%d",&m,&n);
        print_n(m,n);
        return 0;
    }
    void print_n(int m,int n)
    {
        int i;
        for(i=m;i<=n;i++){
            if(narcissistic(i)==1){     //返回1表示是水仙花数
                printf("%d ",i);        //加个空格
            }
        }
                                        //void类型的就直接不要写return了
    }
    int narcissistic(int num)
    {
        int num_,a,sum=0;           //为sum赋初值0 去掉无用变量count
        num_=num;
        while(num_!=0)
        {
            a=num_%10;
            sum+=a*a*a;                 //sum没有赋初值
            num_/=10;
        }
        if(sum==num){
            return 1;
        }else{
            return 0;
        }
    }

     

    点赞 1 评论 复制链接分享

相关推荐