编程变进制
我们刚学了栈,我做了一个任意进制转换的程序,你看一下,,即使你没学,但思想是一样的
假入你输入的是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)!='