⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 07238020chx.txt

📁 进行单字节HEX 到 bcd码的数制转换功能
💻 TXT
字号:
#include <stdio.h>
#include <stdlib.h>
//定义栈接点
typedef struct Snode
{
	int data;
	struct Snode *next,*pre;
}LinkStack;
//链队类型定义
typedef struct
{
	LinkStack *front;
    LinkStack *rear;
}LinkQueue;
//数据进栈
LinkStack *push(LinkStack *ls,int x)
{
	LinkStack *top,*p;
	top=ls;
	p=(LinkStack *)malloc(sizeof(LinkStack));
	if(!p) return NULL;
    p->data=x;
	p->next=NULL;
	p->pre=top;
	top->next=p;
	top=p;
    return top;
}
//数制转换
LinkStack *Transferd(int oldNum,int shuzhi)
{
	LinkStack *top;
	int sz,oldnum,temp;
	top=(LinkStack *)malloc(sizeof(LinkStack));
	top->next=top->pre=NULL;	
	oldnum=oldNum;sz=shuzhi;	
	while(oldnum)
	{
      temp=oldnum%sz;
	  oldnum=oldnum/sz;
	  top=push(top,temp);
	}
   return top;
}
//数据进入队列
LinkQueue *enQueue(LinkQueue *lqu,int x)
{
	LinkStack *p;
	LinkQueue *lq;
	lq=lqu;
    p=(LinkStack *)malloc(sizeof(LinkStack));
	p->data=x;
	p->next=NULL;
	if(lq->rear==NULL)//进来第一个接点
	{
		lq->front=lq->rear=p;
		return lq;
	}
	else
	{
		lq->rear->next=p;
		lq->rear=p;
		return lq;
	}
}
//数据出栈,进入队列
LinkQueue *StackToQueue(LinkStack *ls)
{
  LinkStack *top;
  LinkQueue *lq;
  lq=(LinkQueue *)malloc(sizeof(LinkQueue));
  lq->front=lq->rear=NULL;
  int temp;
  top=ls;
  while(top)
  {
    temp=top->data;
	top=top->pre;
	lq=enQueue(lq,temp);
  }
  return lq;
}
//输出结果
void print(LinkQueue *lqu,int sz)
{
	LinkQueue *p;
	p=lqu;	
	if(p->front==p->rear)
	{
		printf("队列为空!");
	}
	else
	{   
		 printf("(");
		  while(p->front!=p->rear)
		  {
		   switch(p->front->data)
		   {
		    case 10:printf("A");break;
			case 11:printf("B");break;
			case 12:printf("C");break;
		    case 13:printf("D");break;
			case 14:printf("E");break;
			case 15:printf("F");break;
			default :printf("%d",p->front->data);
		   }           
		   p->front=p->front->next;
		  }
		  printf(")%d",sz);	
	}
	printf("\n");
}
//主函数
void main()
{
  LinkStack *ls;
  LinkQueue *lq;
  int x,y;
  printf("请输入要转换的数x和进制y,如果想退出程序请输入0,0:\n");
  scanf("%d,%d",&x,&y);
  while(x!=0&&y!=0)
  {
   while(y!=2&&y!=8&&y!=16)
	{
		printf("\n您输入的进制不符合要求。请重新输入:");
        scanf("%d",&y);
	}
   ls=Transferd(x,y);
   lq=StackToQueue(ls);
   printf("\n%d转换为%d进制的结果:\n",x,y);
   printf("%d=",x);
   print(lq,y);
   printf("\n请输入要转换的数x和进制y,如果想退出程序请输入0,0:\n");
   scanf("%d,%d",&x,&y);
  }
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -