編程變進制
我們剛學了棧,我做了一個任意進制轉換的程序,你看一下,,即使你沒學,但思想是一樣的
假入你輸入的是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)!='