#include
#include
#define MAX 10
void trans(int d, char b[])
{
char st[MAX];
char ch;
int i = 0;
int top = -1;
while (d != 0)
{
ch ='0'+d % 2;
top++;
st[top] = ch;
d / 2;
}
while (top != -1)
{
b[i] = st[top];
top--;
i++;
}
b[i] = '\0';
}
void main()
{
int n;
char str[MAX];
//scanf("%d", &n);
do
{
scanf("%d", &n);
} while (n < 0);
trans(n, str);
printf("對應的二進制數:%s\n", str);
system("pause");
}
這是10轉2進制的程序,為什麼出現Access violation的錯誤啊,還有ch ='0'+d % 2;這語句中為什麼要加一個'0'啊,求大神解釋?
ch ='0'+d % 2;
目的是把數字轉換成對應的字符。原理是ascii中0-9的ascii碼是連著的。
d / 2;
->
d = d / 2;
否則會死循環,並且因為st有限而越界。