【发布时间】:2016-09-29 21:30:38
【问题描述】:
所以我最近开始学习 Steven Kochan 的“Programming in C”一书,目前正在学习第 8 章 - “函数”。 我对练习 8.16 有疑问: “修改程序 8.14 使用户可以转换任意数量的整数。使 规定程序在输入零作为值时终止 要转换的数字。”
程序 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);
但显然它不起作用。这是本章的最后一个练习,我设法完成了其余的练习,但我无法弄清楚这里出了什么问题。 可能我只是错过了一些明显的东西。
【问题讨论】:
-
定义“显然它不起作用”。怎么了?您是否收到错误、崩溃、错误结果……?
-
函数的章节没教你使用参数和返回值?郁闷。