所以我最近開始從Steven Kochan的「Programming in C」一書中學習,現在我正在寫第8章 - 「Functions」。 我的練習8.16有問題: 「修改程序8.14,以便用戶可以轉換任何數量的整數。當數字被輸入的值被輸入時,程序將終止輸入零。」 「。Do-while循環 - 終止條件有什麼問題?
方案8.14的代碼如下:
#include <stdio.h>
#include <stdlib.h>
int convertedNumber[64];
long int numberToConvert;
int base;
int digit = 0;
void getNumberAndBase(void)
{
printf("Number to be converted? ");
scanf("%li", &numberToConvert);
printf("Base? ");
scanf("%i", &base);
if (base < 2 || base > 16)
{
printf("Bad base - must be between 2 and 16\n");
base = 10;
}
}
void convertNumber(void)
{
do
{
convertedNumber[digit] = numberToConvert % base;
digit++;
numberToConvert /= base;
}
while (numberToConvert != 0);
}
void displayConvertedNumber (void)
{
const char baseDigits[16] =
{ '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
int nextDigit;
printf ("Converted number =");
for (--digit; digit >= 0; digit--)
{
nextDigit = convertedNumber[digit];
printf("%c", baseDigits[nextDigit]);
}
printf("\n");
}
int main (void)
{
void getNumberAndBase (void), convertNumber(void),
displayConvertedNumber (void);
getNumberAndBase();
convertNumber();
displayConvertedNumber();
return 0;
}
我的想法是最初使用do-while循環各地的主要功能三種功能是這樣的:
do
{
getNumberAndBase();
convertNumber();
displayConvertedNumber();
}
while (numberToConvert != 0);
但顯然它不起作用。這是本章的最後一部練習,我設法完成了其餘部分,但不是爲了這個世界,我能否找出這裏有什麼問題。 也許我只是想念一些明顯的東西。
定義「顯然它不起作用」。發生什麼事?你是否遇到錯誤,崩潰,錯誤的結果......? – UnholySheep
關於函數的章節並未教您使用參數和返回值嗎?壓抑。 –