当前位置:首页 » 编程软件 » 编程变进制

编程变进制

发布时间: 2023-04-27 23:54:35

c语言编程:怎么把一个十进制数转换成为一个十六进制数

我们刚学了栈,我做了一个任意进制转换的程序,你看一下,,即使你没学,但思想是一样的
假入你输入的是m,可在设一个数组用来装余数,完整程序如下:
#include<stdio.h>
void
main()
{
int
a[10],m,i=0;
printf("please
ennter
a
number\n");
scanf("%d",&m);
while(m!=0)
{
a[i++]=m%16;//在装余数的同时用i统计余数的个数
m=m/16;
}
for(i=i-1;i>=0;i--)
{
switch(a[i])
{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",a[i]);
}
}
}

⑵ c语言编程 把十进制转换为十六进制

方法一:

#include<iostream>
#include <string>
using namespace std;


string DecIntToHexStr(long long num)
{ string str; long long Temp = num / 16; int left = num % 16; if (Temp > 0) str +=

DecIntToHexStr(Temp); if (left < 10) str += (left + '0'); else str += ('A' + left - 10); return str;}
string DecStrToHexStr(string str){ long long Dec = 0; for (int i = 0; i < str.size(); ++i) Dec =

Dec * 10 + str[i] - '0'; return DecIntToHexStr(Dec);}int main()
{ string DecStr; while (cin >> DecStr) { cout << "0x" + DecStrToHexStr(DecStr); } return 0;}

方法二:


#include<iostream>
#include <string>
#include<vector>


#include <sstream>
#include <math.h>
using namespace std;int main()


{ string decStr; cin >> decStr; int num = stoi(decStr); vector<int>v; while (num) { int bit = num % 2; v.push_back(bit); num = num / 2; }


reverse(v.begin(), v.end()); string hexStr; if (v.size() % 4 == 0) { for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for (int j = i * 4; j < (i +

1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; } if (temp <= 9) hexStr += temp; else hexStr += ('A' + temp - 10); } }

else { int zeroNum = 4 - v.size() % 4; for (int i = 0; i < zeroNum; ++i) v.insert(v.begin(), 0); for (int i = 0; i < v.size() / 4; ++i) { int temp = 0, k = 3; for

(int j = i * 4; j < (i + 1) * 4; ++j) { if (v[j] == 1) temp += pow(2, k); --k; }
if (temp <= 9) { stringstream ss; string strTemp;

ss << temp; ss >> strTemp; hexStr += strTemp; } else hexStr += ('A' + temp - 10); } } cout << hexStr << endl; return 0;}

(2)编程变进制扩展阅读:


还有3种方式可以实现,其中两种是使用系统函数,另一种是直接自己编写。

下面的代码就是3种方式的实现,包括2位的整数和任意整数(2的31次方以内)都可以。可自己选择需要的实现方式。

利用系统函数有

1. char * itoa ( int value, char * str, int base );value是要转化的数字,str是转化后的字符串存储的位置,base是进制数(但是这个函数不是标准C函数,有些编译器是不支持的!)。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ itoa (aa, buffer, 16); return (buffer);}

2. sprintf(str,"%x",value);str是转化存储的位置,%x表示十六进制格式,value是要转化的数字。所以代码可以为:

char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa){ sprintf(buffer, "%x", aa); return (buffer);}

3. 自己编写

如果参数只要两位数的整数,那么很简单。

代码如下:

#include <stdio.h>#include <stdlib.h> char buffer [33]; //用于存放转换好的十六进制字符串,可根据需要定义长度 char * inttohex(int aa)

{ sprintf(buffer, "%x", aa); return (buffer);} int main ()

{ int num; char * hex_str; printf ("Enter a number: "); scanf ("%d",&num); hex_str = inttohex (num); printf ("Hexadecimal number: %sH ", hex_str); return 0;}

⑶ 用编程怎么把十进制的变成n进制

1. C语言十进制转换为N进制的程序
代码如下:(可以输出20位数)

#include<stdio.h>

void transfer(int m,int change)

{

int aa[20],j,saveM=m;

for(j=0;m!=0;j++)

{

aa[j]=m%change;

m=m/change;

}

printf("十进制数%d的%d进制形式是:\n",saveM,change);

for(;j!=0;j--)

printf("%d ",aa[j-1]); 注意这空是填aa[j-1],而不是aa[j],因为上面那个循环进行到最后一步时,j++还是会运行一次,但是此时并没有给aa[j]赋值,因为循环结束

}

main()

{

int n,c;

printf("请输入一个整数\n");

scanf("%d",&n);

printf("该整数是十进制数,你想将它转化成几进制数呢?\n");

getchar();

scanf("%d",&c);

transfer(n,c);

}

功能说明:

该函数可以将任意的十进制数转化成任意的N进制数。转化后的结果,每两位数之间用一个空格隔开。
2. c语言编衡渗写一个程序,将十进制整数n 转换成二进制数
#include <stdio.h>

int transfer(int x)

{

int p=1,y=0,yushu;

while(1)

{

yushu=x%2;

x/=2;

y+=yushu*p;

p*=10;

if(x<2)

{

y+=x*p;

break;

}

}

return y;

}

void main()

{

进制转换函数的声明

int transfer(int x);

int x;

printf("请输入一个十进制数:咐卜脊");

scanf("%d",&x);

printf("转换成二进制数是:%d\n",transfer(x));

}

(3)编程变进制扩展阅读:

c语言书写规则弊氏:

1.一个说明或一个语句占一行。

2.用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。

3.低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。

参考资料:

网络-c语言
3. C语言中把10进制转化n进制怎么转
#include<iostream>

#include<cstdio>

using namespace std;

char b[40];

char chg(int n){将数转换成字符

if(n<10)

return n+'0';

return n-10+'a';

}

int main(){

int a,n,len;a为十进制数,n为转换成的进制数

int t;

cin>>a>>n;

len=0;

while(a){

b[++len]=chg(a%n);

a/=n;

}

for(int i=len;i;i--)

printf("%c",b[i]);

cout<<endl;

system("pause");

return 0;

}

你的问题好像是有多组数据,没注意到,就自己修改吧
4. 怎么用编程把十进制转化成二进制
class Program

{

static void Main(string[] args)

{

int shi;用来保存十进制数

Console.WriteLine("******** 十进制转二进制 ********\n");

Console.Write("请输入十进制整数:");

从控制台读取十进制整数

shi = Convert.ToInt32(Console.ReadLine());

将输入的十进制数转换为二进制字符串

string er = Convert.ToString(shi, 2);

输出二进制字符串

Console.WriteLine("二进制为:"+er);

Console.ReadLine();

}

}
5. n进制化十进制怎样转换
1、十进制转N进制

十进制转N进制的方法是“除N取余,逆序排列”,就是用N除去要进行转换的十进制数,得到一个商和余数,再用N除以商得到又一个商和余数,一直继续下去,直到商为0,将得到的所有余数逆序排列,得到的就是N进制数了。

例:将十进制数37转为二进制,计算过程如下:

将余数逆序排列,得到二进制结果100101。

2、N进制转十进制

N进制转十进制的方法是:按权相加法。即把N进制数先写成加权系数展开式,然后再按十进制的加法规则求和,得到对应十进制数。

例:将八进制数转为十进制,计算过程如下:

(3567)8=(3*8*8*8+5*8*8+6*8+7)10

=(512+320+48+7)10

=(887)10

(3)编程变进制扩展阅读:

1、负数的进制转换

先把负数写为其补码形式,然后再根据二进制转换其它进制的方法进行。

例:要求把-9转换为八进制形式。则有:

-9的补码为1111 1111 1111 0111。从后往前三位一划,不足三位的加0

111---->7

110---->6

111---->7

111---->7

111---->7

001---->1

然后将结果按从下往上的顺序书写就是:177767,那么177767就是十进制数-9的八进制形式。
6. 如何用C语言将N进制数转化为十进制
这是我之前写的一个程序。2~16进制正整数,若是17进制或更高也可以,但怎么表示17,'g'还是其他字符呢?需要的话也可以修改。

#include

#include

#include

int N2Str(int value,int N,char *str)

{

char temp[10],*Bits="0123456789abcdef";

int Len;

if(value16||str==NULL) return 0;

if(value>=N)

{

if(!N2Str(value/N,N,str)) return 0;

}

Len=strlen(str);

str[Len]=Bits[value%N];

str[Len+1]='\0';

return 1;

}

int M2N(int M,char *MStr,int N,char *NStr)

{

int value=0,bit;

if(M16||MStr==NULL||N16||NStr==NULL) return 0;

while(*MStr)

{

value*=M;

if(*MStr>='0'&&*MStrelse if(*MStr>='a'&&*MStrelse if(*MStr>='A'&&*MStrif(bit>=M) return 0;

value+=bit;

MStr++;

}

*NStr='\0';

N2Str(value,N,NStr);

return 1;

}

int main(void)

{

char *in="123456";

char out[50];

if(M2N(16,in,10,out))

printf("%s->%s\n",in,out);

else

printf("illegal input data\n");

system("pause");

return 0;

}
7. 讲一个十进制数转换成n进制数 c程序 看看这段代码怎么样 可以用,就
代码很好噢!但没有必要把n>10和n<=10分开处理,核心部分有下面一部分就可以了。至于效率,用指针处理数组要比用下标处理数组效率高一些,用自赋值运算符比一般运算符高一些。但这代码太小,用了也分辨不出来高下……下面是完全按你的思路改过的,你对照看看——

void main(void){

int *p,b[10],m,n;

printf("请输入一个十进制数:\n");

scanf("%d",&m);

printf("请输入你要将该十进制转换成多少进制数:\n");

scanf("%d",&n);

printf("%d转换成%d进制数为\n",m,n);

p=b;

while(m>0){

*p++ = m%n;

m/=n;

}

for(p--;p>=b;p--)

if(*p>9) printf("%c",*p+87);

else printf("%d",*p);

printf("\n");

}
8. 编写一个将N进制转换成十进制的调用程序
有点乱 win-tc写的 仅供参考#include "Stdio.h"#include "Conio.h"#include "Math.h"int sum=0;int w=0;sum 表示最后的转换结果w只是个过度参数 表示数据位数的增加int main(void){ test(12,325); printf("\n%d",sum); getch(); return 0;}int test(int n,int xx){n 表示以前的进制 xx表示要转换的数 int i=xx%n; sum=sum+i*(int)pow(10,w); w++; if(xx==0)return; xx=xx/n; test(n,xx);}。
9. 十进制数N进制数据的转换 用c语言编写 马上就要交了帮帮忙
int main(void)

{

int result[20];

int n,num,i;

scanf("%d",&num);要转换的数

scanf("%d",&n);几进制

for(i=0;num>0;i++)

{

result[i]=num%n;

num=num/n;

}

printf("结果:");

while(i--)printf("%d",result[i]);

return 0;

}

⑷ c语言编程怎么实现进制转换

可以用直接法和间接法转换。

⑸ C语言编程:八进制转换为十进制

#include<stdio.h>

void main()

{

char *p,s[6];int n;

p=s;

gets(p);

n=0;

while(*(p)!='')

{n=n*8+*p-'0';

p++;}

printf("%d",n);

}

(5)编程变进制扩展阅读:

一、二进制数转换

二进制数转换成十进制数

由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。例1105把二进制数110.11转换成十进制数。

二、十进制数转换为二进制数

十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。

1、十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,

如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2、十进制小数转换为二进制小数

十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。

然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。

⑹ c语言编程,如何将十进制转化为2进制

c语言编程将十进制转化为2进制可按手工转换规则进行程序转换。

  • 整数占四个字节,每字节8位,共32位。所以,可以定义一个32位的数组来存储转换结果。

  • 循环将整数进行除2取余数,余数存储到数组中。

  • 当整数整除为0时,结束循环

  • 逆序输出数组,得到转换结果

参考代码:

#include<stdio.h>
voidmain()
{
intc[32],i=0,n;
scanf("%d",&n);//输入待转换整数n
do{
c[i++]=n%2;
n/=2;
}while(n!=0);

for(i--;i>=0;i--)
printf("%d",c[i]);
printf(" ");
}

⑺ 怎样编程完成将十进制整数转化为任意进制的数

这个是C语言的程序,有不懂的我们可以继续探讨。
#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16进制则直接退出
return ;
while(number)
{
switch(number%digits)
{//根据余数的情简雀况做相应处理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=number%digits+'0';
break;
}
number=number/digits;
}
str[i]='\0';
strrev(str);//strrev函数定义在string.h中的,是对字符串做逆序处理的函数
//这里需要逆序的原因是因为得到的结果为该进制袜亮的逆序
}
int main()
{
int number,i;
char str[80];
printf("输入一个十进制数:");
scanf("%d",&number);
printf("\n---------2到拦好早16进制对应关系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d转换为%d进制为:%s\n",number,i,str);
}
return 0;
}
/*上面的的switch语句也可替换为如下代码:
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}*/

热点内容
王者荣耀在哪里显示账号密码 发布:2025-07-12 16:36:42 浏览:896
打包sql数据库 发布:2025-07-12 16:19:27 浏览:794
php日志查看 发布:2025-07-12 16:12:10 浏览:212
ftp目录映射为本地盘符 发布:2025-07-12 16:06:59 浏览:645
nas存储百科 发布:2025-07-12 16:03:17 浏览:126
python的sort函数 发布:2025-07-12 15:53:21 浏览:50
ensp服务器怎么设置web根目录 发布:2025-07-12 15:47:56 浏览:286
安卓怎么设置二卡发信息 发布:2025-07-12 15:43:50 浏览:743
如何看到无线密码 发布:2025-07-12 15:43:13 浏览:677
好网址可缓存 发布:2025-07-12 15:36:07 浏览:254