用C语言编写 从键盘读入一个不大于65535的正整数,然后转换成二进制、八进制、十六进制输出

标准C语言,谢谢啊
2024年11月18日 03:00
有1个网友回答
网友(1):

// 111111111111.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include
#include
#define MaxSize 100

//用栈的方法
typedef struct {
int data[MaxSize];
int top;
}Stack;//顺序栈,也可用链栈

void InitStack(Stack &S)//初始化栈
{
S.top=-1;
}

int push(Stack &S,int x)//入栈
{
if(S.top==MaxSize)
return 0; //栈满
else{
S.top++;
S.data[S.top]=x;
return 1;
}
}

int pop(Stack &S,int &x)//出栈
{
if(S.top==-1)
return 0; //栈空
else{
x=S.data[S.top];
S.top--;
return 1;
}
}

void display(Stack &S)
{
int x;
while(S.top!=-1)
{
pop(S,x);
printf("%x",x);
}

}
void func(int n,int m)//n为十进制数,m为2,8,或16
{
Stack S;
InitStack(S);
while(n!=0)
{
push(S,n%m);
n=n/m;
}
display(S);
}

int main(int argc, char* argv[])
{
int n;
printf("\n请输入一个数:");
scanf("%d",&n);
int m=2;
func(n,m);
m=8;
func(n,m);
m=16;
func(n,m);
return 0;
}