Я реализовал программу для преобразования шестнадцатеричного числа в десятичное число в C, но моя программа не работает. Пожалуйста, помогите мне, чтобы программа работала.Преобразование шестнадцатеричного в десятичное число в c
Я не знаю, в какой части программы есть ошибка. Любые предложения и ответы будут полезны.
Код:
#include <stdio.h>
#include <math.h>
char hexNum[100];
int getDecimal();
int main(int argc, char **argv) {
printf("Enter the hex number: ");
int i = 0;
char ch;
while ((ch = getchar()) != '\n') {
hexNum[i++] = ch;
}
hexNum[i] = '\0';
printf("\nHexadecimal Number is: %s", hexNum);
int n = getDecimal();
printf("\nDecimal Number is: " + n);
return 0;
}
int getDecimal() {
//get to the units digit index
int index = 0;
while (hexNum[index + 1] != '\0') {
index++;
}
//calculate the decimal value and store the result in result var
int var = 0; //store the decimal number
int exp = 0; //keep track of exponent of 16^x
while (index >= 0) {
int ch = hexNum[index--];
switch (ch) {
case 'a':
var = var + (10 * pow(16, exp++));
break;
case 'b':
var = var + (11 * pow(16, exp++));
break;
case 'c':
var = var + (12 * pow(16, exp++));
break;
case 'd':
var = var + (13 * pow(16, exp++));
break;
case 'e':
var = var + (14 * pow(16, exp++));
break;
case 'f':
var = var + (15 * pow(16, exp++));
break;
default: //if its a digit
var = var + ((ch-'0') * pow(16, exp++));
break;
}
}
return var;
}
Пожалуйста, прочтите [Как отладить небольшую программу (Эрика Липпертом)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Как только вы делаете ногу, чтобы точно определить ошибку, если причина вам неясна, тогда непременно задайте вопрос. Как и сейчас, ваш вопрос плохо подходит для SO, поскольку это не что иное, как запрос отладки. – StoryTeller