发布网友
共4个回答
热心网友
void main()
{
int a[32]=,i;
long num;
i=0;
printf("请输入一个十进制数:");
scanf("%ld",&num);
printf("%ld的二进制数为:",num);
while(num>=1)
{
a[i]=num%2;
num=num/2;
i++;
}
for(i=i-1;i>=0;i--)
{
printf("%d",a[i]);
}
printf("\n");
}
这是我写的程序 要转八进制只需把这a[i]=num%2;num=num/2;两句改为a[i]=num%8;
num=num/8;
热心网友
#include <stdio.h>
int main()
{
int a=0,b=0,c=0;
printf("请输入一个二进制数:");
scanf("%d",&a);//这里我就不对输入进行检查了
for(int i=0;;i++)
{
if(a==0)
break;
b=a%2;
a=a/10;
for(int j=i;j>0;j--)
{
if(b==0)
break;
else
b=b*2;
}
c+=b;
}
printf("%d",c);
}
热心网友
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int StackEmpty(SqStack &s)
{
if(s.top==s.base)
return 1;
else
return 0;
}
void InitStack(SqStack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base)
printf("操作失误");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void 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)
printf("操作失误");
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
}
int Pop(SqStack &s,int &e)
{
if(s.top==s.base)
return 0;
else
e=*--s.top;
return 1;
}
void Conversion(SqStack &s)
{
int N,e;
InitStack(s);
printf("请输入一个十进制数:");
printf("N=");
scanf("%d",&N);
while(N!=0)
{
Push(s,N%2);
N=N/2;
}
printf("其二进制形式为:N=");
while(!StackEmpty(s))
{
if(Pop(s,e)==1)
{
printf("%d",e);
}
else
printf("操作失误");
}
}
void main()
{
SqStack s;
Conversion(s);
}
建议用java吧
热心网友
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef struct
{
int *base;
int *top;
int stacksize;
}SqStack;
int StackEmpty(SqStack &s)
{
if(s.top==s.base)
return 1;
else
return 0;
}
void InitStack(SqStack &s)
{
s.base=(int *)malloc(STACK_INIT_SIZE*sizeof(int));
if(!s.base)
printf("操作失误");
s.top=s.base;
s.stacksize=STACK_INIT_SIZE;
}
void 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)
printf("操作失误");
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
}
int Pop(SqStack &s,int &e)
{
if(s.top==s.base)
return 0;
else
e=*--s.top;
return 1;
}
void Conversion(SqStack &s)
{
int N,e;
InitStack(s);
printf("请输入一个十进制数:");
printf("N=");
scanf("%d",&N);
while(N!=0)
{
Push(s,N%2);
N=N/2;
}
printf("其二进制形式为:N=");
while(!StackEmpty(s))
{
if(Pop(s,e)==1)
{
printf("%d",e);
}
else
printf("操作失误");
}
}
void main()
{
SqStack s;
Conversion(s);
}