一个c语言编程题???
编写一个程序实现将一个无符号整数转换为任意X进制的数(2<=X<=16)并显示?请详细一点!谢谢了!!!...
编写一个程序实现将一个无符号整数转换为任意X进制的数(2<=X<=16)并显示?
请详细一点!
谢谢了!!! 展开
请详细一点!
谢谢了!!! 展开
展开全部
#include<stdio.h>
#include<malloc.h>
#define SIZE 100
#define ADD 10
#define LEN sizeof(selemtype)
#define ERROR 0
#define OK 1
typedef int selemtype;
typedef struct
{ selemtype *top;
selemtype *base;
int stacksize;
}sqstack;
int initstack(sqstack &s)
{
s.base=(selemtype *)malloc(SIZE*LEN);
if(!s.base)
{
printf("OVERFLOW!");
return ERROR;
}
s.top=s.base;
s.stacksize=SIZE;
return OK;
}
int push(sqstack &s,selemtype e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(selemtype *)realloc(s.base,(s.stacksize+ADD)*LEN);
if(!s.base)
{
printf("OVERFLOW!");
return ERROR;
}
s.top=s.base+s.stacksize;
s.stacksize+=ADD;
}
*s.top++=e;
return OK;
}
int stackempty(sqstack &s)
{
if(s.top==s.base)
return 1;
else
return 0;
}
int pop(sqstack &s,selemtype &e)
{
if(s.top==s.base)
return ERROR;
e=*--s.top;
return OK;
}
typedef int qelemtype;
typedef struct qnode
{
qelemtype data;
struct qnode *next;
}qnode,*queueptr;
typedef struct
{
queueptr front;
queueptr rear;
}linkqueue;
int initqueue(linkqueue &q)
{
q.front=q.rear=(queueptr)malloc(sizeof(qnode));
if(!q.front)
{
printf("ERROR!OVERFLOW!");
return ERROR;
}
return OK;
}
int enqueue(linkqueue &q,qelemtype e)
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
if(!q.front)
{
printf("ERROR!OVERFLOW!");
return ERROR;
}
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
return OK;
}
int dequeue(linkqueue &q)
{
qelemtype e;
queueptr p;
if(q.rear==q.front)
return ERROR;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)
q.rear=q.front;
free(p);
return e;
}
void conversion()
{
sqstack s;
int n,e,r;
qelemtype t;
linkqueue q;
initstack(s);
initqueue(q);
printf("请输入进制数:");
scanf("%d",&r);
printf("请输入一个非负十进制整数:");
scanf("%d",&n);
while(n)
{
push(s,n%r);
n=n/r;
}
printf("%d进制为:",r);
while(!stackempty(s))
{
pop(s,e);
enqueue(q,e);
}
while(q.front!=q.rear)
{
t=dequeue(q);
printf("%d",t);
}
printf("\n");
}
void main()
{
conversion();
}
#include<malloc.h>
#define SIZE 100
#define ADD 10
#define LEN sizeof(selemtype)
#define ERROR 0
#define OK 1
typedef int selemtype;
typedef struct
{ selemtype *top;
selemtype *base;
int stacksize;
}sqstack;
int initstack(sqstack &s)
{
s.base=(selemtype *)malloc(SIZE*LEN);
if(!s.base)
{
printf("OVERFLOW!");
return ERROR;
}
s.top=s.base;
s.stacksize=SIZE;
return OK;
}
int push(sqstack &s,selemtype e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(selemtype *)realloc(s.base,(s.stacksize+ADD)*LEN);
if(!s.base)
{
printf("OVERFLOW!");
return ERROR;
}
s.top=s.base+s.stacksize;
s.stacksize+=ADD;
}
*s.top++=e;
return OK;
}
int stackempty(sqstack &s)
{
if(s.top==s.base)
return 1;
else
return 0;
}
int pop(sqstack &s,selemtype &e)
{
if(s.top==s.base)
return ERROR;
e=*--s.top;
return OK;
}
typedef int qelemtype;
typedef struct qnode
{
qelemtype data;
struct qnode *next;
}qnode,*queueptr;
typedef struct
{
queueptr front;
queueptr rear;
}linkqueue;
int initqueue(linkqueue &q)
{
q.front=q.rear=(queueptr)malloc(sizeof(qnode));
if(!q.front)
{
printf("ERROR!OVERFLOW!");
return ERROR;
}
return OK;
}
int enqueue(linkqueue &q,qelemtype e)
{
queueptr p;
p=(queueptr)malloc(sizeof(qnode));
if(!q.front)
{
printf("ERROR!OVERFLOW!");
return ERROR;
}
p->data=e;
p->next=NULL;
q.rear->next=p;
q.rear=p;
return OK;
}
int dequeue(linkqueue &q)
{
qelemtype e;
queueptr p;
if(q.rear==q.front)
return ERROR;
p=q.front->next;
e=p->data;
q.front->next=p->next;
if(q.rear==p)
q.rear=q.front;
free(p);
return e;
}
void conversion()
{
sqstack s;
int n,e,r;
qelemtype t;
linkqueue q;
initstack(s);
initqueue(q);
printf("请输入进制数:");
scanf("%d",&r);
printf("请输入一个非负十进制整数:");
scanf("%d",&n);
while(n)
{
push(s,n%r);
n=n/r;
}
printf("%d进制为:",r);
while(!stackempty(s))
{
pop(s,e);
enqueue(q,e);
}
while(q.front!=q.rear)
{
t=dequeue(q);
printf("%d",t);
}
printf("\n");
}
void main()
{
conversion();
}
2008-10-29
展开全部
#include <stdio.h>
#include<stdlib.h>
int main()
{
unsigned int a;
int x;
char s[32];
scanf("%d%d",&a,&x);
itoa(a,s,x);
printf("%s\n",s);
return 0;
}
#include<stdlib.h>
int main()
{
unsigned int a;
int x;
char s[32];
scanf("%d%d",&a,&x);
itoa(a,s,x);
printf("%s\n",s);
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1楼用了栈的特性,佩服!
2楼用了库函数,同样经典!
高手~
2楼用了库函数,同样经典!
高手~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
都是高手
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询