C语言,第五个点RE,求救大佬
查看原帖
C语言,第五个点RE,求救大佬
482829
jsna楼主2021/2/12 10:52
#include<stdio.h>
void csj(int n);//拆分数字存2进数组里
void print(int *a,int j,int js);//a代表存好的2进制,j代表a[0]到a[j],js代表加号的输出
int main()
{

    int n;
    scanf("%d",&n);
    csj(n);//在函数里调用自己写的输出函数
    
    
}
void csj(int n)
{

    int a[10]={0},i=0,js=0;//a中的下标代表2的幂次
    for(i=0;n!=0;i++)//循环拆分n为二进制
    {
        if(n%2!=1)
        {
            a[i]=0;
        }
        else
        {
            a[i]=1;
            js++;
        }


        n=n/2;
    }
    print(a,i-1,js);//调用输出函数
}
void print(int *a,int j,int js)
{
    int i;
    for(i=j;i>=0;i--)//j为a进行运算的最大下标
    {
        if(a[i]!=0)
        {
            if(i==0)
            {
                printf("2(0)");
                if(js!=1)//如果js为1就不需要输出加号
                {
                    printf("+");
                    js--;
                }
            }
            else if(i==1)
            {
                printf("2");
                if(js!=1)
                {
                    printf("+");
                    js--;
                }

            }
            else
            {
                printf("2(");
                csj(i);
                printf(")");
                if(js!=1)
                {
                    printf("+");
                    js--;
                }
            }
        }
        
    }
}
2021/2/12 10:52
加载中...