當前位置:首頁 » 編程語言 » c語言求進制代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言求進制代碼

發布時間: 2022-05-27 00:12:36

c語言,二進制轉十進制問題,求代碼。 別用string.h.

int
trans(char
binarystr[])
{
int
result
=
0;
int
i;
for
(i
=
0;
'\0'
!=
binarystr[i];
i++)
{
result
=
result
*
2
+
binarystr[i]-'0';
}
return
result;
}
參數是二進制字元串,比如"10010101"
返回值是這個字元串對應的十進制數149

㈡ C語言中怎麼知道該數據是什麼進制

在 C 語言代碼中,通常的數字都是以十進制方式書寫的。如果是八進制,必須在前面加「0」,如果是十六進制,必須在前面加「0x」。

比如 13、24、153、23424、11001001 等都是十進制
而 013、024、0153、02342、011001001 等都是八進制
又 0x13、0x24、0x153、0xfa、0x4DA3 等都是十六進制

如果是在字元中需要使用,那麼 \ddd 是八進制的,\xhh 是十六進制的
如:\113 是八進制,\x61 是十六進制

㈢ 求十進制轉換二進制C語言代碼

求十進制轉換二進制C語言代碼代碼如下:

#include <stdio.h>

#define NR (sizeof(int)*8) // 二進制位的個數

void deciToBin(int num); // 十進制轉換為二進制函數聲明

/* 主函數 */

int main(void)

{

int num;

fprintf(stdout, "請輸入一個正整數:");

/* 獲取並檢查用戶輸入 */

while (1)

{

if (fscanf(stdin, "%d", &num) != 1)

{

fprintf(stderr, "輸入錯誤!請重新輸入:");

while (getchar() != ' '); // 去掉多餘的非法字元

continue;

}

else if (num < 0) // 輸入的數不能為負數

{

fprintf(stderr, "請輸入錯誤!請輸入正整數:");

continue;

}

else

break;

}

fprintf(stdout, "對應二進制為:");

#if 1 /* 方法一: 不使用遞歸 */

char bitArr[NR];

int i = -1;

/* 演算法:棧的數學模型 */

do {

i += 1;

bitArr[i] = num % 2;

num /= 2;

} while (num != 0);

/* 逆序列印 */

for (i ; i >= 0; i--)

{

fprintf(stdout, "%d", bitArr[i]);

}

fputc(' ', stdout);

#else /* 方法二: 使用遞歸 */

if (num == 0)

{

fprintf(stdout, "0 ");

}

else

{

deciToBin(num); // 調用第歸函數

fputc(' ', stdout);

}

#endif

return 0;

}

/*

* @函數名:deciToBin

* @函數功能:實現十進制轉換為二進制

* @參數:需要轉換的十進制整數

*/

void deciToBin(int num)

{

/* 第歸結束條件 */

if (num == 0)

{

return;

}

/* 第歸調用 */

deciToBin(num/2);

/* 逆序列印 */

fprintf(stdout, "%d", num%2);

}

(3)c語言求進制代碼擴展閱讀:

使用C語言編程實現任意進制數(2-16進制)轉換為其他任意進制數(2-16進制)方法:

#include<stdio.h>

#include<string.h>

#include<stdlib.h>

int TenNum(char a[],int B);

void Numchange(int m, int B);

int TenNum(char a[], int B)

{

int len, i, num;

int sum = 0;

len = strlen(a);

for (i = 0; i < len; i++)

{

if (a[i] >= '0' && a[i] <= '9')

num = a[i] - '0';

else if (a[i] >= 'A' && a[i] <= 'F')

num = a[i] - 'A' + 10;

sum = sum * B + num;

}

return sum;

}

void Numchange(int m, int B)

{

int n;

if (m)

{

Numchange(m / B, B);

n = m % B;

if (n < 10)

printf("%d", n);

else

printf("%c", n + 55);

}

}

int main()

{

int B, b;

char a[20];

printf("請輸入待轉換數的進制(2-16):");

do {

scanf_s("%d", &B);

} while (B < 2 && B > 16);

printf("請輸入待轉換數:");

getchar();

gets_s(a);

int m = TenNum(a, B);

printf("請輸入需要轉成幾進制數(2-16):");

do {

scanf_s("%d", &b);

} while (B < 2 && B > 16);

printf("%d進制數%s轉換為%d進制數的結果為:",B,a,b);

Numchange(m, b);

printf(" ");

system("pause");

return 0;

}

㈣ C語言,輸入一個數將他轉化為2到16進制的數求代碼

#include<stdio.h>

#include<stdlib.h>

void trans(unsigned int n,char *str,int base)

{

int i=0,length=0,m=0;

char t;

do{

m=n%base; //你可以類比將一個10進制整數將其每個數字分離的方法

if(m>=10)

str[i]=m+'7';

else

str[i]=m+'0';

i++;

n/=base;

}while(n>0);

str[i]='';

length=i;

for(i=0;i<(length/2);i++)

{

t=str[length-1-i];

str[length-1-i]=str[i];

str[i]=t;

}

}


int main()

{

char s[256],sno[30]="my number is 123456 ";

unsigned int n;

int m,i;

FILE*fp;

fp=fopen("f:\myf2.txt","w");

if(!fp)

{

printf("fail ");

return;

}

fputs(sno,fp);

scanf("%d%d",&n,&m);

for(i=2;i<=m;i++)

{

trans(n,s,i);

fprintf(fp,"%d %s(%d) ",n,s,i);

printf("%d %s(%d) ",n,s,i);

}

fclose(fp);

return 0;


}

㈤ 進制轉換代碼C語言

首先要明白十進制轉換成其他進制的方法:

十進制數x不停對y進制進行除法操作,最後再倒取余數。

比方說十進制數35轉換為二進制:

結果就是100011.

然後我們看change函數,實際上是遞歸的方法。

c是x對r求余,再列印c之前,把x/r的值再對r求余......直到x/r=0為止。

比方說還是上面這個例子。

c0=x%r=35%2=1

c1=x/r%r=17%2=1

c2=x/r/r%r=8%2=0

.......

c5=x/r/r/r/r/r%r=1%2=1

到這里之後x的值已經是1了,然後因為1/2=0了,所以不再進行下去了。

然後列印方式是越後面出現的先列印。

還有不懂的請追問哦。

㈥ 進制轉換c語言代碼

要把十進制整數轉換為其他進制數,可以用除法,求出每一次除以指定進制數所得的商,並且把它保存到數組中,不停的做上述的除法,直到所得的商等於零的時候為止,這時候把宿主中保存的余數,從後向前輸出。

㈦ C語言如何實現十六進制轉換成十進制

C語言實現十六進制轉換成十進制如下:

例如將十六進制數字 9FA8C 轉換成十進制

9FA8C = 9×164 + 15×163 + 10×162 + 8×161 + 12×160 = 653964(十進制)。

從右往左看,第1位的位權為 160=1,第2位的位權為 161=16,第3位的位權為 162=256,第4位的位權為 163=4096,第5位的位權為 164=65536 …… 第n位的位權就為 16n-1。

將各個位的數字乘以位權,然後再相加,就得到了十進制形式。

十六進制數的第0位的權值為16的0次方,第1位的權值為16的1次方,第2位的權值為16的2次方。

所以,在第N(N從0開始)位上,如果是是數 X (X 大於等於0,並且X小於等於 15,即:F)表示的大小為 X * 16的N次方。

再例如:十六進制:EA7 = 14×162 + 10×161 + 7×160 = 3751(十進制)。



(7)c語言求進制代碼擴展閱讀:

C語言10進制轉16進制

把十進制的數不停除以16的余數按從右到左的順序排起來就是16進制,例如:55/16=0餘5例如100 100/16=6餘4 6/16餘6,所以就是64,再例如1000 1000/16=62餘8 62/16=3餘12 3/16餘3所以結果是3C8 //。

對於整數部分,用被除數反復除以2,除第一次外,每次除以2均取前一次商的整數部分作被除數並依次記下每次的余數。另外,所得到的商的最後一位余數是所求二進制數的最高位。

對於小數部分,採用連續乘以基數2,並依次取出的整數部分,直至結果的小數部分為0為止。

㈧ C語言中的八進制

除了二進制,C語言還會使用到八進制。

八進制是一種「逢八進一」的進制,它由 0~7 八個符號來描述。同樣,此處通過十進制和八進制的對比來描述八進制的表示方式。

八進制基數為8,加法運算時逢八進一,減法運算時借一當八。例如,數字 0、1、5、7、14、733、67001、25430 都是有效的八進制。

當使用八進製表示十進制數字8時,由於表示八進制的符號只有 0~7,因此,根據逢八進一的規則,需要向高位進一位,表示為10。同理,使用八進製表示十進制數字16時,繼續向高位進一位,表示為 20。

(8)c語言求進制代碼擴展閱讀

八進制轉換為十進制的源代碼如下

#include<stdio.h>

void main()

{

char *p,s[6];int n;

p=s;

printf("Please input a Octal number:");

gets(p);

n=0;

while(*(p)!='')

{

n=n*8+*p-'0';

p++;

}

printf("Octal number to Decimal number:%d",n);

}

㈨ C語言中16進制的表示方法

16進制以0x開頭,後面跟數字0~9或字母A~F(小寫也可以),如:0x2D(16進制數2D)