程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 二進制-關於c程序中Access violation錯誤問題

二進制-關於c程序中Access violation錯誤問題

編輯:編程綜合問答
關於c程序中Access violation錯誤問題

#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有限而越界。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved