两个七进制数相加 七进制输出

#include#include#include

//进制转换

int hex2int(char *str, int *result){

    *result = 0;

    while(*str > 0)

{

// printf("\nstr %s\n",str);

// printf("*str %c\n",*str);

// printf("==========\n");

        if(*str >= '0' && *str <= '6')

{

//printf("*str %c\n",*str);

            *result = *result * 7 + *str++ - '0';

//printf("*result %d\n",*result);

        }

else if(*str >= 'a' && *str <= 'f')

{

            *result = *result * 16 + *str++ - 'a' + 10;

        }

else if(*str >= 'A' && *str <= 'F')

{

            *result = *result * 16 + *str++ - 'A' + 10;

        }

else

{

            return 1;

        }

    }

//printf("*result %d\n",*result);

    return 0;

}

int int2num(int num, char **result, char scale){

    char arr[32];

    char *temp = arr + 32;

    //char *table = "0123456789abcdef";

char *table = "0123456";

    *--temp = 0;

    while(num > scale)

{

        *--temp = table[num % scale];

        num = num / scale;

    }

    if(num)

{

        *--temp = table[num];

    }

else if(*temp == 0)

{

        *--temp = '0';

    }

// printf("\ntemp %s\n",temp);

    *result = strdup(temp);

}

char* ADD(char *x, char *y){

    int a, b;

    if(hex2int(x, &a)){

        printf("x isn't hex.\n");

    }

    if(hex2int(y, &b)){

        printf("y isn't hex.\n");

    }

    int2num(a + b , &x, 7);

    return x;

}

int main(){

    char x[32], y[32];

    printf("x: ");

    scanf("%s", x);

    printf("y: ");

    scanf("%s", y);

    char *t = ADD(x, y);

    printf("x + y = %s\n", t);

    free(t);//释放内存

    return 0;

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 春雨来了,坐在窗前感受有雨的时光,记忆的闸门打开了…… 四岁时,跟奶奶到广安幺爷爷家玩。那时,幺爷爷家没...
    译丹Sunshine阅读 2,540评论 0 0

友情链接更多精彩内容