2 回答

TA貢獻1805條經(jīng)驗 獲得超10個贊
少了個i--;
i--;
while(i>=0){printf("%d",s[i]);i--;}
你多輸出了一個數(shù)
加上i--后結(jié)果對 了
#include <stdio.h>
void tentotwo(int a);
int main()
{
int a;
scanf("%d",&a);
tentotwo(a);
getchar();
getchar();
}
void tentotwo(int a)
{int s[20],i=0;
while(a!=0)
{s[i]=(a%2);a=a/2;i++;}
i--;//這里?。。。。。。。。。。。?!
while(i>=0){printf("%d",s[i]);i--;}
}

TA貢獻1877條經(jīng)驗 獲得超6個贊
因為后邊的數(shù)都對 也就是說前邊多了很多 因為你是按整形輸出的 所以應(yīng)該是多輸出了一個元素 而且這個元素有不穩(wěn)定性
說白了 你的第一個循環(huán) 運行完最后一環(huán)后 i++了 然而這個s[i]里邊你是沒有放東西的 然而 這個數(shù)組用之前沒有初始化 所以這個s[i]里邊是內(nèi)存里邊的一個無關(guān)的數(shù) 被你在第二個循環(huán)里輸出了 所以 第一個循環(huán)結(jié)束之后 添一個i--;
就是這樣
#include "stdio.h"
void tentotwo(int a);
void main()
{
int a;
scanf("%d",&a);
tentotwo(a);
}
void tentotwo(int a)
{int s[20],i=0;
while(a!=0)
{s[i]=(a%2);a=a/2;i++;}
i--;
while(i>=0){printf("%d",s[i]);i--;}
}
或者先把數(shù)組初始化#include "stdio.h"
void tentotwo(int a);
void main()
{
int a;
scanf("%d",&a);
tentotwo(a);
}
void tentotwo(int a)
{int s[20],i=0;
for(;i<=20;i++)
s[i]=0;
i=0;
while(a!=0)
{s[i]=(a%2);a=a/2;i++;}
while(i>=0){printf("%d",s[i]);i--;}
}不過第二種結(jié)果前邊多一個0;不過不影響理解
- 2 回答
- 0 關(guān)注
- 129 瀏覽
添加回答
舉報