C语言5进制转10进制,请教如何用C语言实现10进制转换5进制的转换器

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

sew236ne6j

推荐于 2018.03.28

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:54%    等级:12

已帮助:8909人

//这是我数据结构课上老师留的课堂作业,但是此代码并非本人原创。但已通过验证。

//这个代码可以把十进制的转换成任意进制的。

#include

#include

#define STACK_INIT_SIZE 50

#define STACK_INCREMENT 10

//①------------栈定义--------

typedef struct{

int *base;

int *top;

int stacksize;

}Stack;

//②-----------构造栈---------

Stack InitStack()

{

Stack s;

s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));

if(!s.base) exit(0);

s.top=s.base;

s.stacksize=STACK_INIT_SIZE;

return s;

}

//③------------判空----------

int StackEmpty(Stack s)

{

if(s.base==s.top) //若为空,返回1

return 1;

else

return 0;

}

//④---------- 清空栈----------

void ClearStack(Stack s)

{

s.top=s.base;

}

//⑤------------压栈-------------

void Push(Stack *s,int elem) //必须用指针,否则top地址出了函数后不变

{

if((s->top-s->base+1)>=s->stacksize)

{

s->base=(int *)realloc(s->base,(STACK_INCREMENT+s->stacksize)*sizeof(int));

if(!s->base) exit(0);

s->top=s->base+s->stacksize;

s->stacksize+=STACK_INCREMENT;

}

*(s->top++)=elem;

}

//⑥------------出栈---------------

int Pop(Stack *s) //必须用指针,否则top地址出了函数后不变

{

if(s->base==s->top)

{

printf("栈为空!");

exit(0);

}

//printf("%d ",*(--s.top));

return *(--s->top);

}

//⑦------------求栈长-----------

int GetLength(Stack s)

{

return s.top-s.base;

}

//⑧-------------求栈顶----------

int GetTop(Stack s)

{

if(s.top==s.base)

{

printf("栈为空!\n");

exit(0);

}

return *(s.top-1);

}

//------------主函数-----------

int main()

{

int d1,d2,d3;

Stack s,*s1;

s=InitStack();

s1=&s;

/*

printf("stacksize=%d\n",s.stacksize);

Push(s1,5);

length=GetLength(s);

printf("栈长为:%d\n",length);

Push(s1,8);

length=GetLength(s);

printf("栈长为:%d\n",length);

printf("top=%d\n",GetTop(s));

printf("%d ",Pop(s1));

length=GetLength(s);

printf("栈长为:%d\n",length);

printf("%d ",Pop(s1));

length=GetLength(s);

printf("栈长为:%d\n",length);

*/

printf("输入要转换的十进制数及要转换为几进制:(d1 d2)\n");

scanf("%d%d",&d1,&d2);

d3=d1;

while(d1>=d2)

{

Push(s1,(d1%d2));

d1=d1/d2;

}

Push(s1,d1);

printf("%d转化为%d进制后为:\n",d3,d2);

while(!StackEmpty(s))

{

printf("%d",Pop(s1));

}

printf("\n");

}

00分享举报

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用[1]:这段代码是一个C语言程序,用于将二的字符串转换为十的整数。它定义了一个函数bintodec,该函数接受一个二字符串作为参数,并返回转换后的十整数。在函数内部,它使用了一个循环来遍历二字符串的每个字符,并根据字符的值计算出对应的十数。最后,它将所有的十数相加得到最终的结果。在主函数中,它首先接受用户输入的二字符串,然后调用bintodec函数将其转换为十数并输出结果。[1] 引用[2]:这段代码是另一个C语言程序,用于将二转换为十整数。它首先接受用户输入的二数的长度,然后接受用户输入的二数。接下来,它使用一个循环来遍历二数的每一位,并根据位的位置和值计算出对应的十数。最后,它将所有的十数相加得到最终的结果并输出。[2] 引用[3]:在实际开发中,我们可以使用0和1的字符串来表示信息。例如,某个设备有八个传感器,每个传感器的状态用1表示正常,用0表示故障,可以用一个二字符串来表示它们的状态。而将二转换为十数可以帮助我们更好地理解和处理这些信息。[3] 问题: 如何在C语言中将二转换为十数? 回答: 在C语言中,可以使用不同的方法将二转换为十数。一种方法是使用循环遍历二数的每一位,并根据位的位置和值计算出对应的十数,然后将所有的十数相加得到最终的结果。另一种方法是使用字符串处理函数,将二字符串转换为十整数。以上引用的两段代码分别展示了这两种方法的实现。你可以根据自己的需求选择其中一种方法来行二转换的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值