欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

正序分解整数

程序员文章站 2022-03-22 16:32:02
...

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;
}
相关标签: C 初阶笔记