‘壹’ c语言,十进制转任意进制怎么做
#include<stdio.h>
intmain()
{
inta,to,i=0;
chararray[64]="";
scanf("%d%d",&a,&to);
while(a!=0)
{
array[i]=a%to;
if(array[i]>=10)
array[i]=array[i]-10+'A';
else
array[i]+=48;
a/=to;
i++;
}
i--;
while(i>=0)
{
printf("%c",array[i]);
i--;
}
printf(" ");
return0;
}
‘贰’ 用C语言设计一个程序:要求能把十进制转换为任意进制(2,8,16)
#include<stdio.h>
void dectobin(unsigned int number);
void dectooct(unsigned int number);
void dectohex(unsigned int number);
void convert(unsigned int number,int n);
void main()
{
unsigned int number;
int n;
printf("请输入带转换的十进制数:\n");
scanf("%u",&number);
while(getchar()!='\n')
continue;
printf("想转换为多少进制?(2、8或者16?)\n");
scanf("%d",&n);
convert(number,n);
}
void convert(unsigned int number,int n)
{//函数功能,把number从十进制转换为n进制数,n为2,8或者16
if(n!=2&&n!=8&&n!=16)
printf("此程序只能转换为2,8或者16进制的数值");
else if(n==2)
dectobin(number);
else if(n==8)
dectooct(number);
else
dectohex(number);
}
void dectobin(unsigned int number)
{//函数功能,把十进制数number转换为二进制数
int a[20];
int i=0;
int j;
while(number)
{
a[i]=number%2;
number=number/2;
i++;
}
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
void dectooct(unsigned int number)
{//函数功能,把十进制数number转换为八进制数
int a[20];
int i=0;
int j;
while(number)
{
a[i]=number%8;
number=number/8;
i++;
}
printf("0"); //在数字前打印一个八进制前缀0
for(j=i-1;j>=0;j--)
printf("%d",a[j]);
}
void dectohex(unsigned int number)
{//函数功能,把十进制数number转换为十六进制数
char a[20];
int i=0;
int j;
while(number)
{
a[i]=number%16;
if(a[i]>9)
switch(a[i])
{
case 10:a[i]='a';break;
case 11:a[i]='b';break;
case 12:a[i]='c';break;
case 13:a[i]='d';break;
case 14:a[i]='e';break;
case 15:a[i]='f';break;
}
number=number/16;
i++;
}
printf("0x"); //在数字前打印一个八进制前缀0x
for(j=i-1;j>=0;j--)
printf("%c",a[j]);
}
‘叁’ c语言,求将一个十进制的数转化为一个任意进制的数。求解决我的程序的问题,谢啦。
你好!问题解决如下代码所示^-^
#include<stdio.h>
#include<conio.h>
#include<malloc.h>
struct node
{
int data;
struct node*link;
};
struct node*top=NULL;
void jinzuanhuan(int,int);
void display();
void main()
{
int a,b;
printf("请输入你想要转换的数(十进制):");
scanf("%d",&a);
for(;;)
{
printf("要转换的进制(大于1的整数):");
scanf("%d",&b);
if(b>1)//不存在1进制的数,数据的进制都大于1
break;
}
jinzuanhuan(a,b);
display();
}
void jinzuanhuan(int n,int m )
{
struct node*temp;
temp=(struct node*)malloc(sizeof(struct node));
if(temp==NULL)
printf("\n栈已满.");
while(n!=0)
{
temp->data=n%m;
temp->link=top;
top=temp;
n=n/m;
temp=(struct node*)malloc(sizeof(struct node));//这里还要新开辟新的内存空间,存储进制数的又一位
if(temp==NULL)
printf("\n栈已满.");
}
free(temp);//清除多开辟的空间
}
void display()
{
struct node*top1;
int item;
top1=top;
if(top1==NULL)//这里不能top1=NULL,这是赋值运算
return;
while(top1!=NULL)
{
item=top1->data;
printf("%d ",item);
top1=top1->link;
}
printf("\n");
}
‘肆’ C语言:编写一个函数,其功能是将一个十进制正整数转换成任意进制整数,并输出转换结果
#include "stdio.h" #include "stdlib.h" main() { int n,x=0,a[100]; printf("请输入转换的数和进制:\n"); scanf("%d",&n); while(n){ a[x++]=n%2; n/=2; } --x; while(x>=0) printf("%d",a[x--]); printf("\n"); system("pause"); } 再送你一个进制转换的 问题:把十进制数转换为其它进制 #include "stdio.h" #include "stdlib.h" main() { int n,k; char *str="0123456789ABCDEF"; printf("请输入转换的数和进制:\n"); scanf("%d%d",&n,&k); int px=0,a[128]; while(n){ a[px++]=n%k; n/=k; } --px; while(px>=0) printf("%c",str[a[px--]]); printf("\n"); system("pause"); }
‘伍’ C语言 将十进制整数化成任意进制的数
不好用,,写的这么复杂..还不如这样
简单又明了:
main()
{
int
a;
char
biao[100];
printf("请输入您要转化的十进制数!!~\n");
scanf("%d",&a);
printf("您的十进制数%d经过转化为二进制数为%s\n",a,itoa(a,biao,2));
printf("您的十进制数%d经过转化为八进制数为%o\n",a,a);
printf("您的十进制数%d经过转化为十六进制数为%X\n",a,a);
}
以上经过调试可以运行.
因为
数字在内存里是以2进制保存的,,建立个字符数组,直接把内存读出来就行了,