glo*_*pit 2 c arrays function function-calls cs50
我正在编写将采用整数数组的代码,然后可以将其转换为所需的基数,例如base-16.
出于某种原因,终端通过该程序并打印出来
"转换数="
这是我的代码:
#include <stdio.h>
#include <cs50.h>
int convertedNumber[64];
int base;
int digit = 0;
void getNumberAndBase(void) {
int size;
printf("How many numbers to be converted??\n");
size = GetInt();
int array[size];
for (int i = 0; i < size; i++) {
printf("Number to be converted?\n");
array[i] = GetInt();
}
printf("Base?\n");
do {
base = GetInt();
if (base < 2 || base > 16) {
printf("Bad base - must be between 2 and 16. Try again!\n");
}
} while (base < 2 || base > 16);
void convertNumber(int size, int array[size]);
}
void convertNumber(int size, int numberToConvert[size]) {
for (int i = 0; i < size; i++) {
do {
convertedNumber[digit] = numberToConvert[i] % base;
digit++;
numberToConvert[i] /= base;
} while (numberToConvert[i] != 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), displayConvertedNumber(void);
getNumberAndBase();
displayConvertedNumber();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在您的代码中,您从未调用过convertNumber()
函数.你应该改变getNumberAndBase()
函数的最后一部分
void convertNumber(int size, int array[size]);
Run Code Online (Sandbox Code Playgroud)
至
convertNumber (size, array);
Run Code Online (Sandbox Code Playgroud)
拨打电话.
这就是说,你应该定义convertedNumber
,base
而且digit
里面main()
,然后把它们传递一些的函数的参数(能够使用它里面调用的函数).总的来说,它们没有理由成为全球性的.
另外,将函数声明移出main()
; 把它们放在文件范围内.