高分求解C语言解题,正确继续追加!!!!!

2025-03-05 05:30:49
推荐回答(3个)
回答1:

#include 
#include 
int card[5] = {1,3,9,27,81};
void foo(int value, int bit){
    int i;
    for(i=0;i<5;i++)
        if(card[i]==value){
            printf("%d",value);
            return;
        }
    int base = 1;
    int b = bit;
    while(b--) base *= 3;
    int v = value % base;
    int need = base - v;
    foo(value+need,bit+1);
    while(need){
        printf("-%d",base/3);
        need -= base/3;
    }
}
int main()
{
    int x;
        scanf("%d",&x);
        foo(x,1);
        printf("\n");
return 0;
}
你试试看看。

回答2:

//1,3,9,27,81是三进制的各个数位的十进制值,把输入的数字用3进制表示出来,从低位开始,跳过0,遇到1就加那一位的值,遇到2就减,在上一位加一。参考程序对任意正整数都有效。

#include "stdio.h"

void base3(int n, int base)
{
    int m=n%3;
    if (n>=2) base3((m==2)?(n+1)/3:n/3, base*3);
    switch (m)
    {    
        case 0:break;
        case 1:if (n>=3) printf("+"); printf("%d", base);break;
        case 2:printf("-%d", base);break;
        default:break;
    }
}

int main()
{
    int n;
    scanf("%d", &n);
    base3(n, 1);
    return 0;
}

回答3:

答:5×﹙5-1÷5﹚=24