-1
一個簡單的印刷錯誤我只是寫一個程序來更改十進制數到另一個基地(2 < =基數< = 16)。
運行該程序並打印正確的答案後,我遇到一個錯誤消息:「程序已停止工作」。你可以看看我的代碼,並找到它掛在哪裏??? !!!我真的很困惑。
這是我的代碼:在.c
int decimal, radix, pow = 1, temp;
printf("enter your number and the 2 <= radix <= 16\n");
scanf("%d%d",&decimal, &radix);
temp = decimal;
for(; temp >= radix; temp /= radix)// finding the greatest exponent of radix in decimal
pow *= radix;
while(pow >= 1){
decimal -= temp * pow;
if(temp == 10)
printf("A");
else if(temp == 11)
printf("B");
else if(temp == 12)
printf("C");
else if(temp == 13)
printf("D");
else if(temp == 14)
printf("E");
else if(temp == 15)
printf("F");
else
printf("%d",temp);
pow /= radix;
temp = decimal/pow;
}
puts("");
我認爲這個問題是因爲「TEMP =十進制/ POW」,但我怎麼能解決這個問題的?
年底計算
temp = decimal/pow;
有簡單的十進制轉換到另一個基站的方式。在'pow = 0'時檢查是否將'decimal'分開。 – coderredoc問題是在循環的最後一行用**除**。 –
I.e. 'pow/= radix'的最後一個分區導致'pow'被置爲* 0 *,'temp = decimal/pow'具有未定義的行爲。 –