Ⅰ c語言編程 將10進制整數轉化成任意進制整數
將桐爛任意進制的整數化成十進制整數 一、目的和要求 1.應用循環進行冪運算。 2.掌握其它進制的數化成十進制數的計算方法。 3.轉換的結果正確。 二、實驗內容 1.鍵盤上任意輸入一個任意進制的整數及它的進制。 2.根據其吵輪游它進制的數化成十進制數的計算方法,編寫程序將其轉換成十升銷進 制的數。 三、演算法 設輸入的數為:a0a1a2
Ⅱ c語言編程怎麼實現進制轉換
可以用直接法和間接法轉換。
Ⅲ 編程題 從鍵盤上輸入1個4位的整數a,分解出每一位數字,按逆序的數字組合出新的整數b。
main()
{int a,b=0,t;
scanf("%d",&a);
t=a;
while(t>0)
{b=b*10+t%10;
t/=10;}
printf("a=%d\n",a);
printf("b=%d\n",b);}
例如:
#include<iostream>
using namespace std;
int main()
{
int n;
printf("please input n (xxxx):");
scanf("%d",&n);
while(n!=0)
{
cout<<n%10<<endl;
n=n/10;
(3)編程實現十進制分解組合擴展閱讀:
整數中,能夠被2整除的數,叫做偶數。不能源純被雹模咐2整除的數則叫做奇數。即當n是整數時,偶數可表示為2n(n為整數);奇數則可表示為2n+1(或2n-1)。
偶數包括正偶數(亦稱雙數)、負偶數和0。所有整數不是奇數,就是偶數。
在十進制里,我們可用看個位數的方式判斷該數是奇數還是偶數:個位為1,3,5,7,9的數為奇數;個位為0,2,4,6,8的數為偶數。
Ⅳ C語言編程問題:輸入一個10進制整數,各個倍數逆序後組成一個新的數,輸出該數的2倍
雖然不知道做信帶這個數的的位數,但是我們可以通過求余取模的方式來計算。例如你輸入的數字是123,先對這個數求對10的余數,即坦粗123%10=3,這個數的個位數已經對我們沒用了可以直接去掉123/10=12,123後一位的逆純蘆序為3;再求余數12%10=2,再去掉末位數12/10=1,後兩位數的逆序為3*10+2=32;再求余數1%10=1,再去掉末尾數1/10=0,後三位的末位數為32*10+1=321。我們可以通過去掉末位數是否等於0來判斷是否需要再求余數。
上述描述的編程如下:
#include<stdio.h>
int main ()
{
int n, m, t; //變數n保存輸入的10進制整數,m保存輸出的整數,t為中間變數
scanf("%d",&n);
m = 0;
while(n != 0) //n的值等於0說明輸入數的所有位置已經考慮完
{
t = n % 10; //可以得到n的最後一位數
n = n / 10; //將n的最後一位數去掉
m = m*10 + t; //得到當前的輸出數值
}
m = m * 2; //求逆序後數值的兩倍
printf("%d\n",m);
return 0;
}
Ⅳ 如何用c語言編寫二進制和十進制之間的轉換
二進制轉十進制
n
為輸入的二進制數,d用來處旦激昌理模扒該數。
k為標志位,當k為1時表示輸入的數有問題,需要重新輸入。
i為每次分解的個位數;j為二進制的權值;m為累計的十進制和;p為輸入的數的位數,超過10時,該數越界,需要重新輸入,定k=1。
程序如下:
#include
<conio.h>
main()
{
long
int
n,d;
int
k,i,j,m,p;
do
{
k=0;
m=0;j=1;i=0;p=0;
printf("\ninput
an
number
only
includes
0
or
1:");
scanf("%ld"鉛鬧,&n);
if(n<0)
k=1;
d=n;
while(d)
{
i=d%10;p++;
if(i>1
||
p>10)
{k=1;break;}
m+=i*j;
j=j*2;
d/=10;
}
}
while(k==1
||
m==0);
printf("\n
the
number
is
%d\n",m);
getch();
}
Ⅵ c語言:寫一個程序完成二進制與十進制,十進制與十六進制之間的轉換。
計算機中常用的數的進制主要有:二進制、八進制、十六進制,學習計算機要對其有所了解。2進制,用兩個阿拉伯數字:0、1;8進制,用八個阿拉伯數字:0、1、2、3、4、5、6、7;10進制,用十個阿拉伯數字:0到9;16進制就是逢16進1,但我們只有0~9這十個數字,所以我們用A,B,C,D,E,F這五個字母來分別表示10,11,12,13,14,15。字母不區分大小寫。以下簡介各種進制之間的轉換方法:一、二進制轉換十進制例:二進制「1101100」1101100←二進制數6543210←排位方法例如二進制換算十進制的演算法:1*26+1*25+0*24+1*23+1*22+0*21+0*20↑↑說明:2代表進制,後面的數是次方(從右往左數,以0開始)=64+32+0+8+4+0+0=108二、二進制換算八進制例:二進制的「10110111011」換八進制時,從右到左,三位一組,不夠補0,即成了:010110111011然後每組中的3個數分別對應4、2、1的狀態,然後將為狀態為1的相加,如:010=2110=4+2=6111=4+2+1=7011=2+1=3結果為:2673三、二進制轉換十六進制十六進制換二進制的方法也類似,只要每組4位,分別對應8、4、2、1就行了,如分解為:010110111011運算為:0101=4+1=51011=8+2+1=11(由於10為A,芹敗所以11即B)1011=8+2+1=11(由於10為A,所以11即B)結果為:5BB四、二進制數轉換為十進制數二進制數第0位的權值是2的0次方,第1位的權值是2的1次方……所以,設有一個二進制數:01100100,轉換為10進制為:計算:0*20+0*21+1*22+0*23+0*24+1*25+1*26+0*27=100五、八進制數轉換為十進制數八進制就是逢8進1。八進制數採用0~7這八數來表達一個數。八進制數第0位的權值為8的0次方,第1位權值為8的1次方,第2位權值為8的2次方……所以,設有一個八進制數:1507,轉換為十進制為:計算:7*80+0*81+5*82+1*83=839結果是,八進制數1507轉換成十進制數為839六、十六進制轉換十進制例:2AF5換算成10進制直接計算就是:5*160+F*161+A*162+2*163=10997(別忘了,在上面的計算中,A表示10,而F表示15)、現在可以看出,所有進制換算成10進制,關鍵在於各自的權值不同。假設有人問你,十進數1234為什麼是一千二百三十四?你盡可以給他這么一個算式:1234=1*103+2*102+3*101+4*100十進制與二進制轉換之相互演算法十進制轉二進制:用2輾轉相除至結果為1將余數和最後的1從下向上倒序寫就是結果例如302302/2=151餘0151/2=75餘175/2=37餘137/2=18餘118/2=9餘09/2=4餘14/2=2餘02/2=1餘0故二進制為100101110二進制轉十進制從最後一位開始算,依次列為第0、1、2位第n位的數(0或1)乘以2的n次方得到的結果相加就是答案例如:01101011.轉十進制:第0位:1乘2的0次方=11乘2的1次方=20乘2的2次方=01乘2的3次方=80乘2的4次方=01乘2的5次方=321乘2的6次方=640乘2的7次方=0然後:1+2+0+8+0+32+64+0=107.二進制01101011=十進制107.一、二進制數轉換成十進制數由二進制野首灶數轉換成十進制數的基本做法是,把二進制數頌扮首先寫成加權系數式,然後按十進制加法規則求和。這種做法稱為"按權相加"法。二、十進制數轉換為二進制數十進制數轉換為二進制數時,由於整數和小數的轉換方法不同,所以先將十進制數的整數部分和小數部分分別轉換後,再加以合並。1.十進制整數轉換為二進制整數十進制整數轉換為二進制整數採用"除2取余,逆序排列"法。具體做法是:用2去除十進制整數,可以得到一個商和余數;再用2去除商,又會得到一個商和余數,如此進行,直到商為零時為止,然後把先得到的余數作為二進制數的低位有效位,後得到的余數作為二進制數的高位有效位,依次排列起來。2.十進制小數轉換為二進制小數十進制小數轉換成二進制小數採用"乘2取整,順序排列"法。具體做法是:用2乘十進制小數,可以得到積,將積的整數部分取出,再用2乘餘下的小數部分,又得到一個積,再將積的整數部分取出,如此進行,直到積中的小數部分為零,或者達到所要求的精度為止。然後把取出的整數部分按順序排列起來,先取的整數作為二進制小數的高位有效位,後取的整數作為低位有效位。1.二進制與十進制的轉換(1)二進制轉十進制方法:"按權求和"例:(1011.01)2=(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10=(8+0+2+1+0+0.25)10=(11.25)10(2)十進制轉二進制·十進制整數轉二進制數:"除以2取余,逆序輸出"例:(89)10=(1011001)2289244……1222……0211……025……122……121……00……1·十進制小數轉二進制數:"乘以2取整,順序輸出"例:(0.625)10=(0.101)20.625X21.25X20.5X21.02.八進制與二進制的轉換例:將八進制的37.416轉換成二進制數:37.416011111.100001110即:(37.416)8=(11111.10000111)2例:將二進制的10110.0011轉換成八進制:010110.00110026.14即:(10110.011)2=(26.14)83.十六進制與二進制的轉換例:將十六進制數5DF.9轉換成二進制:5DF.9010111011111.1001即:(5DF.9)16=(10111011111.1001)2例:將二進制數1100001.111轉換成十六進制:01100001.111061.E即:(1100001.111)2=(61.E)16
Ⅶ 怎樣編程完成將十進制整數轉化為任意進制的數
這個是C語言的程序,有不懂的我們可以繼續探討。
#include<stdio.h>
#include<string.h>
void TentoAny(int number,char *str,int digits)
{
int i=0;
if(digits>16||digits<2)//非2~16進制則直接退出
return ;
while(number)
{
switch(number%digits)
{//根據余數的情簡雀況做相應處理
case 15:
str[i++]='F';
break;
case 14:
str[i++]='E';
break;
case 13:
str[i++]='D';
break;
case 12:
str[i++]='C';
break;
case 11:
str[i++]='B';
break;
case 10:
str[i++]='A';
break;
default:
str[i++]=number%digits+'0';
break;
}
number=number/digits;
}
str[i]='\0';
strrev(str);//strrev函數定義在string.h中的,是對字元串做逆序處理的函數
//這里需要逆序的原因是因為得到的結果為該進制襪亮的逆序
}
int main()
{
int number,i;
char str[80];
printf("輸入一個十進制數:");
scanf("%d",&number);
printf("\n---------2到攔好早16進制對應關系----------\n");
for(i=2;i<=16;i++)
{
TentoAny(number,str,i);
printf("%d轉換為%d進制為:%s\n",number,i,str);
}
return 0;
}
/*上面的的switch語句也可替換為如下代碼:
if(number%digits>=10)
{
str[i++]='A'+(number%digits-10);
}
else
{
str[i++]=number%digits+'0';
}*/
Ⅷ c++函數編程實現自然數的十進制、二進制、八進制、十六進制轉換
#include <iostream>
using namespace std;
void Transform(int n,int base)
{ int num[20],i=0,j,m=n;
do
{ i++;
num[i]=m%base; // 保存余數
m=m/base;
}while (m!=0);
cout<<"**"<<n<<"轉換為"<<base<辯坦<"進制的結果為:";
for (j=i;j>=1;j--) /胡灶攜/ 將余數褲伏序列反序輸出
if (num[j]<10) cout<<num[j]; // 如果是0-9數字則直接輸出數字
else cout<<char(num[j]+'A'-10); // 如果是大於9的數字則轉化為字元輸出
cout<<endl;
}
int main()
{ int n,choice;
cout<<"輸入一個整數:"; cin>>n;
do
{ cout<<"輸入需要轉換的進制:2-9,16,32(輸入0退出)";
cin>>choice;
switch(choice)
{ case 2: Transform(n,2); break;
case 3: Transform(n,3); break;
case 4: Transform(n,4); break;
case 5: Transform(n,5); break;
case 6: Transform(n,6); break;
case 7: Transform(n,7); break;
case 8: Transform(n,8); break;
case 9: Transform(n,9); break;
case 16: Transform(n,16); break;
case 32: Transform(n,32); break;
case 0: break;
default: cout<<"輸入錯誤"<<endl;
}
}while(choice!=0);
return 0;
}
Ⅸ 編寫程序代碼:定義一個函數過程實現十進制數轉換成二進制數、八進制數、十六進制數的功能。
#include "stdio.h"察早
#include "stdlib.h"
int main()
{
int L1;
printf("團賣輸入數字\n"塌沒逗);
scanf("%d", &L1);
char str1[256];
char str2[256];
char str3[256];
itoa(L1, str1, 2);
itoa(L1, str2, 8);
itoa(L1, str3, 16);
printf("2進制:%s\n8進制:%s\n16進制:%s\n",str1,str2,str3);
return 0;
}