c語言輸出十進制
Ⅰ c語言 怎樣將二進制數轉換成十進制,又怎樣將十進制數轉換成二進制數輸出
將二進制數轉換成十進制,一般是從字元串轉換成一個整數,按位值乘以權值相累加得到結果。
如:1010=1*2^3+0*2^2+1*2+0
=((((1*2)+0)*2)+1)*2+0
將十進制數轉換成二進制數,採用的原理就是輾轉除2,逆向輸出余數。(windows系統下的itoa函數也是一個不錯的選擇,但DIY更有意義)
實現方法:
#include <stdio.h>
void swap( char *a, char *b )
{
char t=*a;
*a=*b;
*b=t;
}
char *reverse(char *s,int len)
{
char *b=s, *e=s+len-1;
while( b<e )
{
swap(b++,e--);
}
return s;
}
char *dec2bin(n)
{
static char str[33];
int i=0;
do {
str[i++]=n%2+'0';
n/=2;
}while( n );
str[i]=0;
return reverse(str,i);
}
int bin2dec(char *s)
{
int i,n=0;
for( i=0;s[i];i++ )
n=n*2+s[i]-'0';
return n;
}
void main()
{
int n=100;
char *p;
p=dec2bin(n);
printf("%d(D)=%s(B)\n", n, p );
n=bin2dec(p);
printf("%s(B)=%d(D)\n", p, n );
}運行結果:
100(D)=1100100(B)
1100100(B)=100(D)
Ⅱ C語言用1個10進制數表示字元串,並輸出該值怎麼做
要把一個十進制形式的整數數字字元串,轉換為一個十進制整數,可以用以下的辦法:
char s[]="12345678";
int i,n=0;
for(i=0;s[i];i++)
n=n*10+s[i]-'0';
printf("%d",n);
運行這段代碼後可以輸出:
12345678
Ⅲ C語言輸入十六進制,輸出十進制
直接將16進制以16為底,然後根據金智個稅依次計算,然後將結果求和之後即可得到十進制了
Ⅳ 輸入一個8進制數,輸出一個10進制的數.怎麼用C語言寫
好啊!我給你說說!
你可以這樣寫:
#include"stdio.h"
main()
{int
i;
scanf("%o",&i);
printf("%d",i);}
這樣就可以了,其實你說的不過是數據輸出中的
轉換字元
的應用就是了。
其中:
d
將參數以
十進制
的
形式
輸出
o
將參數以無
正負號
八進制
的形式輸出
x
將參數以無正負號的
十六進制
的形式輸出
u
將參數以無正負號的十進制的形式輸出
怎麼樣?明白了吧?
Ⅳ C語言中 輸出十進制 八進制 十六進制 有哪些表示方法
%d
%o
%x
Ⅵ C語言:寫一函數,輸入一個十六進制數,輸出相應的十進制數。
有幾個問題
一個是函數聲明不對
函數調用有問題
判斷數值臨界不準,沒有包含==的情況
演算法可以寫的簡單一點
最終優化如下
#include<stdio.h>
#include<string.h>
void main()
{
char array[100];
void fun(char*);
gets(array);
fun(array);
}
void fun(char array[100])
{
int sum=0,i;
for(i=0;i<strlen(array);i++)
{
sum*=16;
if('0'<=array[i]&&array[i]<='9')
sum+=array[i]-'0';
if('a'<=array[i]&&array[i]<='z')
sum+=array[i]-'a'+10;
if('A'<=array[i]&&array[i]<='Z')
sum+=array[i]-'A'+10;
}
printf("%d",sum);
}
Ⅶ 有C語言編寫一函數,輸入一十六進制數,輸出相應的十進制數
/*按要求,輸入輸出都在子函數中進行*/
#include
void
fun(void)
{
int
a=0,i;
char
str[6];
printf("輸入十六進制數:\n");
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>='0'&&str[i]<='9')
a=a*16+str[i]-48;
else
if(str[i]>='a'&&str[i]<='z')
a=a*16+str[i]-'a'+10;
else
a=a*16+str[i]-'A'+10;
printf("對應的十進制數為:%d\n",a);
}
int
main(void)
{
fun();
getchar();
}
Ⅷ c語言輸出格式%*s
c語言輸出格式%*s,標識形參佔位。
*在printf中使用,表示用後面的形參替代的位置,實現動態格式輸出。例如:printf("%*s",10,s);意思是輸出字元串s,但至少佔10個位置,不足的在字元串s左邊補空格,這里等同於printf("%10s",s)。
(8)c語言輸出十進制擴展閱讀:
C語言輸出格式大全:
格式佔位符(%)可以以下字母配合使用用來表示某些特定的輸入輸出。
%a,%A 讀入一個浮點值(僅C99有效)
%c 讀入一個字元
%d 讀入十進制整數
%i 讀入十進制,八進制,十六進制整數
%o 讀入八進制整數
%x,%X 讀入十六進制整數
%s 讀入一個字元串,遇空格、製表符或換行符結束。
%f,%F,%e,%E,%g,%G 用來輸入實數,可以用小數形式或指數形式輸入。
%p 讀入一個指針
%u 讀入一個無符號十進制整數
%n 至此已讀入值的等價字元數
%[] 掃描字元集合
%% 讀%符號
Ⅸ c語言,輸入一個二進制數,輸出它的十進制數,最簡單的
#include <stdio.h>
int main()
{
int len,i=0,number=0;
char c[100];
do
{
scanf("%c",&c[i]);
i++;
}while(c[i-1]!='\n');
len=i-1;
for(i=0;i<len;i++)
{
number=(number<<1)|(c[i]-'0');
}
printf("%d\n",number);
return 0;
}
Ⅹ C語言 寫一個函數 輸入一個十六進制數 輸出相應的十進制
#包括< stdio, h >
h#包括< math.h >
# include < string。H >
Intmain()
{
Char[10]。
Void轉換(char[]a);
Printf(「輸入十六進制數:」);
(一);輸入一個十六進制數
轉換(a);
返回0;
}
Void轉換(char[]a)
{
Intn,I,num=0;
N=strlen(a);
對於(I = n - 1;I > = 0;我)
{
如果(a < I > > = '0' & a < I > < = '9')
Num + = (a < I > - '0') * pow (16, n - 1 - I);
否則(a < I > > = 'a' && a < I > < = 'Z')
Num + =(10 +(<我> - a)) *戰俘(16 n - 1 - I);
否則(a < I > > = 'a' && a < I > < = 'z')
Num + =(10 +(<我> - a)) *戰俘(16 n - 1 - I);
}
Printf(「將小數轉換為:」);
Printf("%d",num);
}
(10)c語言輸出十進制擴展閱讀:
函數的作用是:從標准輸入設備(鍵盤)中讀取一個字元串,直到回車結束。但是回車不屬於這個字元串。調用格式為(s);其中s是字元串變數(字元串數組名或字元串指針)。
gets(s)函數與scanf(「%s」,s)類似,但不完全相同。對字元串輸入使用scanf("%s",s)函數的問題是,如果輸入了空格,則認為輸入字元串是完整的。