Ⅰ c语言编程 将10进制整数转化成任意进制整数
将桐烂任意进制的整数化成十进制整数 一、目的和要求 1.应用循环进行幂运算。 2.掌握其它进制的数化成十进制数的计算方法。 3.转换的结果正确。 二、实验内容 1.键盘上任意输入一个任意进制的整数及它的进制。 2.根据其吵轮游它进制的数化成十进制数的计算方法,编写程序将其转换成十升销进 制的数。 三、算法 设输入的数为:a0a1a2
Ⅱ c语言编程怎么实现进制转换
可以用直接法和间接法转换。
Ⅲ 编程题 从键盘上输入1个4位的整数a,分解出每一位数字,按逆序的数字组合出新的整数b。
main()
{int a,b=0,t;
scanf("%d",&a);
t=a;
while(t>0)
{b=b*10+t%10;
t/=10;}
printf("a=%d\n",a);
printf("b=%d\n",b);}
例如:
#include<iostream>
using namespace std;
int main()
{
int n;
printf("please input n (xxxx):");
scanf("%d",&n);
while(n!=0)
{
cout<<n%10<<endl;
n=n/10;
(3)编程实现十进制分解组合扩展阅读:
整数中,能够被2整除的数,叫做偶数。不能源纯被雹模咐2整除的数则叫做奇数。即当n是整数时,偶数可表示为2n(n为整数);奇数则可表示为2n+1(或2n-1)。
偶数包括正偶数(亦称双数)、负偶数和0。所有整数不是奇数,就是偶数。
在十进制里,我们可用看个位数的方式判断该数是奇数还是偶数:个位为1,3,5,7,9的数为奇数;个位为0,2,4,6,8的数为偶数。
Ⅳ C语言编程问题:输入一个10进制整数,各个倍数逆序后组成一个新的数,输出该数的2倍
虽然不知道做信带这个数的的位数,但是我们可以通过求余取模的方式来计算。例如你输入的数字是123,先对这个数求对10的余数,即坦粗123%10=3,这个数的个位数已经对我们没用了可以直接去掉123/10=12,123后一位的逆纯芦序为3;再求余数12%10=2,再去掉末位数12/10=1,后两位数的逆序为3*10+2=32;再求余数1%10=1,再去掉末尾数1/10=0,后三位的末位数为32*10+1=321。我们可以通过去掉末位数是否等于0来判断是否需要再求余数。
上述描述的编程如下:
#include<stdio.h>
int main ()
{
int n, m, t; //变量n保存输入的10进制整数,m保存输出的整数,t为中间变量
scanf("%d",&n);
m = 0;
while(n != 0) //n的值等于0说明输入数的所有位置已经考虑完
{
t = n % 10; //可以得到n的最后一位数
n = n / 10; //将n的最后一位数去掉
m = m*10 + t; //得到当前的输出数值
}
m = m * 2; //求逆序后数值的两倍
printf("%d\n",m);
return 0;
}
Ⅳ 如何用c语言编写二进制和十进制之间的转换
二进制转十进制
n
为输入的二进制数,d用来处旦激昌理模扒该数。
k为标志位,当k为1时表示输入的数有问题,需要重新输入。
i为每次分解的个位数;j为二进制的权值;m为累计的十进制和;p为输入的数的位数,超过10时,该数越界,需要重新输入,定k=1。
程序如下:
#include
<conio.h>
main()
{
long
int
n,d;
int
k,i,j,m,p;
do
{
k=0;
m=0;j=1;i=0;p=0;
printf("\ninput
an
number
only
includes
0
or
1:");
scanf("%ld"铅闹,&n);
if(n<0)
k=1;
d=n;
while(d)
{
i=d%10;p++;
if(i>1
||
p>10)
{k=1;break;}
m+=i*j;
j=j*2;
d/=10;
}
}
while(k==1
||
m==0);
printf("\n
the
number
is
%d\n",m);
getch();
}
Ⅵ c语言:写一个程序完成二进制与十进制,十进制与十六进制之间的转换。
计算机中常用的数的进制主要有:二进制、八进制、十六进制,学习计算机要对其有所了解。2进制,用两个阿拉伯数字:0、1;8进制,用八个阿拉伯数字:0、1、2、3、4、5、6、7;10进制,用十个阿拉伯数字:0到9;16进制就是逢16进1,但我们只有0~9这十个数字,所以我们用A,B,C,D,E,F这五个字母来分别表示10,11,12,13,14,15。字母不区分大小写。以下简介各种进制之间的转换方法:一、二进制转换十进制例:二进制“1101100”1101100←二进制数6543210←排位方法例如二进制换算十进制的算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑说明:2代表进制,后面的数是次方(从右往左数,以0开始)=64+32+0+8+4+0+0=108二、二进制换算八进制例:二进制的“10110111011”换八进制时,从右到左,三位一组,不够补0,即成了:010110111011然后每组中的3个数分别对应4、2、1的状态,然后将为状态为1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3结果为:2673三、二进制转换十六进制十六进制换二进制的方法也类似,只要每组4位,分别对应8、4、2、1就行了,如分解为:010110111011运算为:0101=4+1=51011=8+2+1=11(由于10为A,芹败所以11即B)1011=8+2+1=11(由于10为A,所以11即B)结果为:5BB四、二进制数转换为十进制数二进制数第0位的权值是2的0次方,第1位的权值是2的1次方……所以,设有一个二进制数:01100100,转换为10进制为:计算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八进制数转换为十进制数八进制就是逢8进1。八进制数采用0~7这八数来表达一个数。八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方……所以,设有一个八进制数:1507,转换为十进制为:计算:7*80+0*81+5*82+1*83=839结果是,八进制数1507转换成十进制数为839六、十六进制转换十进制例:2AF5换算成10进制直接计算就是:5*160+F*161+A*162+2*163=10997(别忘了,在上面的计算中,A表示10,而F表示15)、现在可以看出,所有进制换算成10进制,关键在于各自的权值不同。假设有人问你,十进数1234为什么是一千二百三十四?你尽可以给他这么一个算式:1234=1*103+2*102+3*101+4*100十进制与二进制转换之相互算法十进制转二进制:用2辗转相除至结果为1将余数和最后的1从下向上倒序写就是结果例如302302/2=151余0151/2=75余175/2=37余137/2=18余118/2=9余09/2=4余14/2=2余02/2=1余0故二进制为100101110二进制转十进制从最后一位开始算,依次列为第0、1、2位第n位的数(0或1)乘以2的n次方得到的结果相加就是答案例如:01101011.转十进制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然后:1+2+0+8+0+32+64+0=107.二进制01101011=十进制107.一、二进制数转换成十进制数由二进制野首灶数转换成十进制数的基本做法是,把二进制数颂扮首先写成加权系数式,然后按十进制加法规则求和。这种做法称为"按权相加"法。二、十进制数转换为二进制数十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。1.十进制整数转换为二进制整数十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。2.十进制小数转换为二进制小数十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。1.二进制与十进制的转换(1)二进制转十进制方法:"按权求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十进制转二进制·十进制整数转二进制数:"除以2取余,逆序输出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十进制小数转二进制数:"乘以2取整,顺序输出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八进制与二进制的转换例:将八进制的37.416转换成二进制数:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:将二进制的10110.0011转换成八进制:010110.00110026.14即:(10110.011)2=(26.14)83.十六进制与二进制的转换例:将十六进制数5DF.9转换成二进制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:将二进制数1100001.111转换成十六进制:01100001.111061.E即:(1100001.111)2=(61.E)16
Ⅶ 怎样编程完成将十进制整数转化为任意进制的数
这个是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';
}*/
Ⅷ c++函数编程实现自然数的十进制、二进制、八进制、十六进制转换
#include <iostream>
using namespace std;
void Transform(int n,int base)
{ int num[20],i=0,j,m=n;
do
{ i++;
num[i]=m%base; // 保存余数
m=m/base;
}while (m!=0);
cout<<"**"<<n<<"转换为"<<base<辩坦<"进制的结果为:";
for (j=i;j>=1;j--) /胡灶携/ 将余数裤伏序列反序输出
if (num[j]<10) cout<<num[j]; // 如果是0-9数字则直接输出数字
else cout<<char(num[j]+'A'-10); // 如果是大于9的数字则转化为字符输出
cout<<endl;
}
int main()
{ int n,choice;
cout<<"输入一个整数:"; cin>>n;
do
{ cout<<"输入需要转换的进制:2-9,16,32(输入0退出)";
cin>>choice;
switch(choice)
{ case 2: Transform(n,2); break;
case 3: Transform(n,3); break;
case 4: Transform(n,4); break;
case 5: Transform(n,5); break;
case 6: Transform(n,6); break;
case 7: Transform(n,7); break;
case 8: Transform(n,8); break;
case 9: Transform(n,9); break;
case 16: Transform(n,16); break;
case 32: Transform(n,32); break;
case 0: break;
default: cout<<"输入错误"<<endl;
}
}while(choice!=0);
return 0;
}
Ⅸ 编写程序代码:定义一个函数过程实现十进制数转换成二进制数、八进制数、十六进制数的功能。
#include "stdio.h"察早
#include "stdlib.h"
int main()
{
int L1;
printf("团卖输入数字\n"塌没逗);
scanf("%d", &L1);
char str1[256];
char str2[256];
char str3[256];
itoa(L1, str1, 2);
itoa(L1, str2, 8);
itoa(L1, str3, 16);
printf("2进制:%s\n8进制:%s\n16进制:%s\n",str1,str2,str3);
return 0;
}