日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

C语言十六进制转八进制

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言十六进制转八进制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路:將十六進制先轉為十進制再轉為八進制

十六進制轉十進制:與二進制轉十進制類似。對十六進制每個數從左往右依次乘16的0,1,2,......并相加得到相應的十進制。

比如:對123ABC,12×16(0)+11×16(1)+10×16(2)+3×16(3)+2×16(4)+1×16(5)

十進制轉八進制:與十進制轉二進制類似。十進制的數對8取余并保存,最后將所得所有余數倒著輸出,所得結果即為所得八進制結果。

比如:對39,39%8=7,39/8=4,4%8=4,4/8=0。余數為74,所以所得八進制為47。

以下是代碼詳情:

#include<stdio.h> #include<string.h> #include<math.h> int main() {char a[100][100],b[100][100];int i,j,m,k;long long n=0;printf("請輸入需要計算的數的個數:\n");scanf("%d",&m);for(k=0;k<m;k++)//要輸入m行的十六進制{printf("請輸入第%d個十六進制數:\n",k+1);scanf("%s",a[k]);for (i=0;a[k][i]!='\0';i++)//十六進制轉十進制{if(a[k][i]>='A' && a[k][i]<='F')//將十六進制的字母轉為數字方便計算a[k][i]=(a[k][i]-'A')+10+'0';n+=((a[k][i]-'0')*(pow(16,strlen(a[k])-1-i)));//轉十進制}for(j=0;;j++)//十進制轉為八進制并存入數組B中{b[k][j] = n % 8;n = n / 8;if (n == 0){break;}}}for(k=0;k<m;k++)//輸出八進制{printf("所得第%d個八進制數為:",k+1);for (j = strlen(b[k])-1; j >= 0; j--)//從后往前倒著輸出{printf("%d", b[k][j]);}printf("\n");}return 0; }

小編的編程還欠提升,如果有什么小錯誤,還請大家幫我指出來,我后期我會努力改進滴~謝謝大家啦~

希望該內容能幫大家更好的理解進制轉換~

總結

以上是生活随笔為你收集整理的C语言十六进制转八进制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。