正序分解整数

1.前n项求和

f(n)=1+1/2+1/3+1/4+……+1/n
int main()
{
    int n;
    scanf("%d",&n);
    int i;
    double sum=0.0;
    for(i=1;i<=n;i++){
        sum+=1.0/i;
    }
    printf("f(%d)=%f\n",n,sum);
    return 0;
}

2.f(n)=1-1/2+1/3-1/4+……+1/n

int main()
{
    int n;
    scanf("%d",&n);
    int i;
    double sum=0.0;
    int sign=1;//为了实现加1减1    也可以直接double sign=1.0;,下方就可以直接sum+=sign/i;
    for(i=1;i<=n;i++){
        sum+=sign*1.0/i;
        sign=-sign;
    }
    printf("f(%d)=%f\n",n,sum);
    return 0;
}

3.正序分解整数
输入一个非负整数,正序输出它的每一位数字
输入:13425
输出:1 3 4 2 5

int main()
{
    //方案一:先逆序再逆序的方案,只适用于末尾没有0的数字
    int x;
    scanf("%d",&x);
    int t=0;
    do{//整数逆序
        int d=x%10;
        t=t*10+d;
        x/=10;
    }while(x>0);
    printf("x=%d,t=%d\n",x,t);//输出观察逆序是否正确,,此时x值为0,如果不是0的话出不来循环
    x=t;//要想让x参与循环的话,把t的值赋给x
    do{//逆序输出每一位数字
        int d=x%10;
        printf("%d",d);
        if(x>=10){//解决末尾空格,要在非最后一步输出空格
           printf(" ");
        }
        x/=10;
    }while(x>0);
    printf("\n");
    return 0;
}
int main()
{
    //方案二:
    //推导x=13425
    //13425/10000->1  //
    //13425%10000->3425
    //10000/10->1000
    //3425/1000->3  //
    //3425%1000->425
    //1000/10->100
    //425/100->4  //
    //425%100->25
    //100/10->10
    //25/10->2  //
    //25%10->5
    //10/10->1
    //5/1->5  //
    //5%1->0
    //0/10->0
    int x;
    scanf("%d",&x);
    //int mask=10000;此句要修改,利用判断数字位数的程序修改,让程序根据输入的x来计算得到这个mask
    int mask=1;
    int t=x;
    while(t>9){
            //得出一个数字位数的循环
        t/=10;
        mask*=10;
    }
    printf("x=%d,mask=%d\n",x,mask);//此句用来显示,判断cnt是否正确
    //int mask=pow(10,cnt-1);//C中的一个函数,可以用10的(cnt-1)次幂算出mask
    do{
        int d=x/mask;
        printf("%d",d);
        if(mask>9){
            printf(" ");
        }
        x%=mask;
        mask/=10;
       //printf("x=%d,mask=%d,d=%d\n",x,mask,d);//这句是为了观察程序
    }while(mask>0);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值