這里先問下樓主怎么吧十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制呢?
成都創(chuàng)新互聯(lián)主營東乃網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app開發(fā)定制,東乃h5成都小程序開發(fā)搭建,東乃網(wǎng)站營銷推廣歡迎東乃等地區(qū)企業(yè)咨詢
好了,這是一個(gè)問題。就是取出每一個(gè)位判斷。
這里提供一個(gè)十進(jìn)制的int型數(shù)據(jù)轉(zhuǎn)二進(jìn)制的算法。你可以自己完成你要得了:
void itob(int num,char* buf)
{
int i;
char* tmp=buf;
int temp;
for(i=0;i32;++i){
temp=num(1(31-i));
temp=temp(31-i);
tmp[i]=(temp==0)?'0':'1';
}
buf[32]='\0';
}
一、char s[MAXLINE]; 即然定義為全局變量,何苦又去傳參數(shù)?itob(n, s ,b);
二、return(s); 返回的是個(gè)指針(地址),為何函數(shù)返回值類型定義為char ? char itob(int n,char s[],int b) ,應(yīng)該是char *itob(int n,char s[],int b)
三、 if(k=10)
s[i]=k+'a'-10;
k=10,則k+'a'-10;如何保證不超過255?一個(gè)無符號(hào)char的最大值是255,因?yàn)?,它只能有一個(gè)字節(jié)
看不太懂你的代碼想實(shí)現(xiàn)什么?作業(yè)題目呢?貼出來看看
按照你的程序改的,希望能幫到你,不清楚的可以HI我
#include stdio.h
int t=0; //考慮到你可能還沒學(xué)指針,所以采用定義了一個(gè)全局變量t這種方法
void itob(int n,int s[])
{
int i=0,m;
while(n)
{
s[i]=n%2; /* +'\0';我不知道加'\0'為什么,加了貌似沒什么用*/
i++;
n=n/2;
}
t=i-1; /*當(dāng)n==0之前,i還是多自加了一遍的,所以減去1,現(xiàn)在數(shù)組最大的下標(biāo)是t,即s[t]是最后一個(gè)元素*/
for(i=0;i=t/2;i++) /*t/2是因?yàn)榻粨Q只要進(jìn)行到中間的一個(gè)元素,要是在交換下去等于把剛才對(duì)換的數(shù)據(jù)又換回來了*/
{
m=s[i];
s[i]=s[t-i];
s[t-i]=m;
}
}
void main()
{
void itob(int n, int s[]); /*這一行聲明可以不寫,因?yàn)槟阍谑褂们耙呀?jīng)定義了*/
int x;int a[100];
int i;
printf("請(qǐng)輸入一個(gè)整數(shù):");
scanf("%d",x);
itob(x,a);
for(i=0;i=t;i++) /*下標(biāo)是達(dá)到t的,所以i=t,而不是it*/
printf("%d",a[i]);
printf("\n");
}