水仙花数

输入一个n,可以算出小于n的水仙花数,并输出总数,奇数的个数,偶数的个数,并询问你想输出偶数还是奇数并输出。

#include<stdio.h>
int sxh(int n,int i);
int issxh (int n);
int main(void)
{
    int i,n,sxh,num,choice,indexj,indexo;
    int nj[100],no[100];

    indexo = indexj = 0;
    printf("请输入n,求小于n的水仙花数:");
    scanf("%d",&n);
    for(i = 100; i <= n; i++)
    {
        sxh = issxh(i);
        if( sxh == -1)
            ;
        else if( sxh % 2 == 0)
            no[indexo++] = sxh;
        else if(sxh % 2 == 1)
            nj[indexj++] = sxh;
    }
    num = indexj + indexo;
    printf("共有%d个水仙花数\n",num);
    printf("其中有%d个是奇数%d个是偶数\n",indexj,indexo);
    printf("请输入显示奇数还是偶数(1表示奇数,0表示偶数):");
    scanf("%d",&choice);
    if(choice == 1)
    {
        printf("其中奇数的水仙花数为:\n");
        for(i = 0; i<indexj; i++)
            printf("%d ",nj[i]);
    }
    else if(choice == 0)
    {
        printf("其中偶数的水仙花数为:\n");
        for(i = 0; i<indexo; i++)
            printf("%d ",no[i]);
    }
}
int issxh (int n)
{
    int sum=0,store,i = 0;

    for(store = n; n > 0; n /= 10)
        i++;
    for(n = store; n > 0; n /= 10)
        sum += sxh(n % 10,i);
    if (sum != store)
        sum = -1;
    return sum;
}
int sxh(int n,int i)
{
    int j,sum = 1;

    for (j = 1; j <= i; j++)
        sum *= n;
    return sum;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值