⑴ 如何在c語言中輸出二進制數
有八進制,十進制和十六進制,不過沒二進制,如果要,只能自己寫轉化
#include
void
main()
{
int
n
=
11;
printf("%o\n",
n);
printf("%d\n",
n);
printf("%x\n",
n);
}
⑵ 編一個c程序:輸入一個十進制數,可將該數轉換成指定的進制數形式輸出.
10進制轉換為2進制c++的實現
#include
#include
using namespace std;
void translate_integer_helper(double x, vector& r)
{
bool is_put_zero = false;
int i_part = static_cast(x);
for(int i = 0; i< sizeof(int)*8; i++)
{
if(i_part & 1<<(31-i))
{
is_put_zero = true;
r.push_back('1');
}
else
if(is_put_zero)
r.push_back('0');
}
if(r.size()==0) r.push_back('0');
}
void translate_decimal_helper(double x, vector& r)
{
r.push_back('.');
double f_part = x - static_cast(x);
while(!(-0.0001 <= f_part && f_part<= 0.0001))
{
f_part *= 2;
if(1 == int(f_part))
{
r.push_back('1');
f_part -= 1;
}
else
r.push_back('0');
}
}
void translate(double x, vector& r)
{
translate_integer_helper(x, r);
translate_decimal_helper(x, r);
}
void display(const vector& x)
{
bool is_display_zero = false;
for(vector::const_iterator iter = x.begin(); iter!=x.end(); ++iter)
{
if(*iter == '0' && is_display_zero == false) continue;
is_display_zero = true;
cout.put(*iter);
}
}
int main()
{
double a;
cout<<"請輸入一十進制數:";
cin>>a;
vector rslt;
translate(a, rslt);
display(rslt);
cout<<"(該數所對應的二進制數)"< }
⑶ C語言 十六進制怎麼輸出
需要准備的材料分別有:電腦、C語言編譯器。
1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。
⑷ C語言編程,輸入十進制數輸出十六進制和八進制
可以通過下面的公式解決
#include<stdio.h>
const int maxn = 128;
const int index8 = 8;
const int index16 =16;
int main()
{int Array8[maxn];
int Array16[maxn];
int n, cot8 = 0;
scanf("%d", &n);
int m = n, cot16 = 0;
while(n) {Array8[cot8++] = n % index8;
n /= index8;}
while(m) {Array16[cot16++] = m % index16;
m /= index16;}
int i;
for(i = cot8 - 1; i >= 0; i--)
printf("%d", Array8[i]);
puts("");
for(i = cot16 - 1; i >= 0; i--)
(4)輸出特定進制數c語言擴展閱讀:
十進制轉十六進制的具體方法:
對於整數部分,用被除數反復除以16,除第一次外,每次除以16均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。
對於小數部分,採用連續乘以基數16,並依次取出的整數部分,直至結果的小數部分為0為止。故該法稱「乘基取整法」。
10進制數轉換成十六進制數,這是一個連續除以16的過程:把要轉換的數,除以16,得到商和余數,將商繼續除以16,直到商為0。最後將所有餘數倒序排列,得到數就是轉換結果。
⑸ 有C語言編寫一函數,輸入一十六進制數,輸出相應的十進制數
int
lox_16,lox_10;
cin>>hex>>lox_16;
//c中用(scanf())輸入的是4位16進制數
//將16進制數轉換為10進制數
注意lox_16已經為16進制數
lox_10=lox_16/1000*pow(10,3)+lox_16/100%10*pow(10,2)+lox_16%100/10*pow(10,1)+lox_16%10*pow(10,0);
//lox_16
是4位的,不是4位,可以自己以這種形式編一個循環
⑹ 用C語言編程,輸入一個十進制正整數,輸出其對應的十六進制整數。
#include<stdio.h>
int main()
{
int a,*p;
p=&a;
scanf("%d",p);
printf("%x ",*p);
return 0;
}
(6)輸出特定進制數c語言擴展閱讀:
十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。
十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。
⑺ C語言:鍵盤輸入一個十進制整數,輸出其對應的二進制、三進制、四進制……十六進制數值。
#defineN"0123456789ABCDEF"
#include<stdio.h>
voidchange(intx,intn,char*p){
chartmp[100];//臨時存放轉換數
inti,total=0;
while(x){
tmp[total++]=N[x%n];
x/=n;
}
for(i=total-1;i>=0;i--){
p[total-1-i]=tmp[i];
}
if(total==0){
p[0]='0';
p[1]=0;
}
else
p[total-1-i]=0;
}
intmain()
{
chars[100];//用於存放轉換的進制的數
inti,x;
printf("把一個數轉換成234...16進制數 ");
scanf("%d",&x);
for(i=2;i<=16;i++){
change(x,i,s);
printf("轉換成%d進制是:%s ",i,s);
}
}
⑻ c語言編程輸入一個整數,輸出它的十六進制、八進制、十進制、科學計數法
//C語言:
#include<stdio.h>
intmain(void)
{
inta;
scanf("%d",&a);
printf("8進制:%o 10進制:%d 16進制:%x 科學記數法:%e",a,a,a,a);
return0;
}
//C++:
#include<iostream>
usingnamespacestd;
intmain()
{
inta;
cin>>a;
cout<<endl;
cout<<"8進制:"<<oct<<a<<endl;
cout<<"10進制:"<<dec<<a<<endl;
cout<<"16進制:"<<hex<<a<<endl;
return0;
}
⑼ C語言:寫一函數,輸入一個十六進制數,輸出相應的十進制數。
#include<stdio.h>
#include<math.h>
#include<string.h>
int main()
{
char a[10];
void convert(char a[]);
printf("請輸入十六進制數:");
gets(a);//輸入十六進制數
convert(a);
return 0;
}
void convert(char a[])
{
int n,i,num=0;
n=strlen(a);
for(i=n-1;i>=0;i--)
{
if(a<i>>='0'&&a<i><='9')
num+=(a<i>-'0')*pow(16,n-1-i);
else if(a<i>>='A'&&a<i><='Z')
num+=(10+(a<i>-'A'))*pow(16,n-1-i);
else if(a<i>>='a'&&a<i><='z')
num+=(10+(a<i>-'a'))*pow(16,n-1-i);
}
printf("轉換十進制為:");
printf("%d",num);
}
(9)輸出特定進制數c語言擴展閱讀:
gets()的用法:
gets()函數用來從標准輸入設備(鍵盤)讀取字元串直到回車結束;但回車符不屬於這個字元串。其調用格式為:gets(s);其中s為字元串變數(字元串數組名或字元串指針)。
gets(s)函數與scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)函數輸入字元串時存在一個問題,就是如果輸入了空格會認為輸入字元串結束,空格後的字元將作為下一個輸入項處理,但gets()函數將接收輸入的整個字元串直到回車為止。
示例:
#include<stdio.h>
int main()
{
char s[20];
printf("What's your name? ");
gets(s);
printf("%s ",s);
return 0;
}
當輸入a bde回車的時候,會輸出a bde。
⑽ 用c語言寫一個函數,輸入一個十進制數,輸出對應的N進制數,求解
//十進制轉其它進制
#include<stdio.h>
#definecharset"0123456789ABCDEFGHIJKLMNOPQ"
intlongtoother(longx,intn,char*p){//整數部分轉換進制,返回數字長度
inti=0,k,m,mm;
char*pp=p;
if(x==0){*p='0';*(p+1)=0;return1; }
else{
while(x!=0){//i用於計數共多少位
k=x%n; *pp=charset[k];
pp++; x/=n; i++;
}
*pp=0; m=i;
for(i=m-1,k=0;i>k;i--,k++){
mm=p[i];p[i]=p[k];p[k]=mm;
}
returnm;
}
}
char*dectoother(doublex,intn,char*p,intxx){//xx用於指定小數位長度
inti,m;
longxi;
doublexf;
char*pp=p;
xi=(long)x;//整數部分
xf=x-xi;//小數部分
m=longtoother(xi,n,pp);//轉換整數部分
if(xf==0){p[m]=0;returnp;}
p[m]='.';
for(i=1;i<=xx;i++){//轉換小數部分
xf=xf*n;
xi=(long)xf;
p[m+i]=charset[xi];
xf=xf-xi;
if(xf==0){p[m+i+1]=0;break;}
}
}
char*Dectoother(doublex,intn,char*p){//把x轉換成n進制數
if(x<0){//如果是負數
*p='-';
dectoother(-x,n,p+1,16);
}
else
dectoother(x,n,p,16);
returnp;
}
intmain(){
charstr[100];
intn=16;
doublex=180.125;
printf("%lf的%d進制是:%s ",x,n,Dectoother(x,n,str));
}