【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。...
生活随笔
收集整理的這篇文章主要介紹了
【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<stdio.h>void?itob(int?n,char?s[],?int?b)
{int?i=1;for(;i<=32;i++)????//共循環了32次,保證得到32位的二進制數{s[i-1]=?n?%?b;???//數組是從編號0開始的,一直到編號31結束n?=?n/b?;?//用模除的方法依次得到每位進制數}for(i=32;i>0;i--){printf("%d",s[i-1]);?}
}int?main()
{char?ret[32];char?s[32];int?n=0;scanf("%d",&n);itob(n,s,?2);????//此時進制b=2return?0;
}
??????? 經過深層次的學習,我將此題又做進一步的修改與完善,解決了任意進制輸出的效果,并且每次輸出不需要32位全部輸出,而是具體情況需要幾位二進制就輸出幾位數。代碼如下:
#include<stdio.h>void?reverse(int?len,char?arr[])?//逆置輸出正確的進制位 {int?left?=0;int?right?=len?-1;while(left?<?right){char?temp?=?arr[left];??//a[0]與最后一個互換arr[left]?=?arr[right];arr[right]?=?temp;right?--;left?++;???} }void?itob(int?num,char?s[],?int?b) {int?i=0;while(num)??{if(b<10){?s[i]=num%?b+'0';????//得到int型??num?/=?b?;?//用模除的方法依次得到每位進制數i++;}else?if(b==16){s[i]="0123456789abcdef"[num%16];num/=16;i++;}?else{break;?}}s[i]='\0';reverse(i?,?s); }int?main() {char?s[32];int?b=0;scanf("%d",&b);itob(255,s,?b);????//此時進制b可以任意輸入printf("%s\n",s);return?0; }?
轉載于:https://blog.51cto.com/10740184/1706404
總結
以上是生活随笔為你收集整理的【详解】C语言:编写一个函数itob(int n,char s[], int b),将整数n转换为以b进制的数。保存到s中。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: i茅台客户端
- 下一篇: dedecms批量删除文档关键词可以吗