十进制转换为其他进制

来源:互联网 发布:环比增长率算法 编辑:程序博客网 时间:2024/04/29 18:58
#include<stdio.h>#include<stdlib.h>#include<malloc.h>#define STACK_INIT_SIZE 100#define STACKINCREMENT 10#define OK 1#define ERROR 0#define True 1#define False 0#define OVERFLOW -1typedef int Status;//栈的存储结构 typedef struct{  int  *base;  int *top;  int stacksize;}Sqstack;//构建空栈 Status InitStack(Sqstack *s){         s->base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));     if(!s->base) exit(OVERFLOW);     s->top=s->base;     s->stacksize=STACK_INIT_SIZE;      return OK;   }//压栈操作 Status Push(Sqstack *s, int e){     if(s->top-s->base>=s->stacksize)//若栈满,追加存储空间      {      s->base=(int *)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));     if(!s->base)     exit(OVERFLOW);     s->top=s->base+s->stacksize;  // 将栈顶指针指向当前栈顶元素的上方      s->stacksize+=STACKINCREMENT;  //增加栈已分配的存储空间     }   *(s->top++)=e;   return OK;    }//出栈操作 Status Pop(Sqstack *s,int *e) {  if(s->top==s->base) //如果为空栈则返回错误     return ERROR;    *e=*(--(s->top)); //取栈顶元素   return OK;      }Status StackEmpty(Sqstack *s){  if(s->top==s->base)      return True;  else       return False;     }Status ClearSqstack(Sqstack *s){  s->top=s->base;  return OK;}void Conversion(Sqstack *s,int N,int b){  char c;  int e;   while(N)  {     Push(s,N%b);     N=N/b;       }  while(!StackEmpty(s))  {   Pop(s,&e);   if(e>9&&e<16)  {   switch(e)     {      case 10:c='A';printf("%c",c);break;      case 11:c='B';printf("%c",c);break;      case 12:c='C';printf("%c",c);break;      case 13:c='D';printf("%c",c);break;      case 14:c='E';printf("%c",c);break;       case 15:c='F';printf("%c",c);break;      default:break;     }   }  else   printf("%d",e);  }    printf("\n");} int main(){        int N;    int b;    char c;    Sqstack s;     InitStack(&s);     printf(" 1.十进制的转化\n 0.退出\n");    while(c!='0')  {    scanf("%c",&c);             switch(c)   {    case '1':    printf("请输入要转化的数据:");     scanf("%d",&N);    printf("请输入要转化的进制:");     scanf("%d",&b);     Conversion(&s,N,b);    ClearSqstack(&s);         break;    case '0':         exit(0);    default:         break;   }   }                              system("pause");}


十进制转化为其他进制

若取余后数字>=10 &&<=15

则10对应A。。。15对应F
原创粉丝点击