Преобразовать число в строке к десятичной системе - C (СИ)
Формулировка задачи:
Дана строка, содержащая число в шестнадцатеричной системе исчисления.
Преобразовать число в строке к десятичной системе.
#include <stdio.h>
int main(int argc, char *argv[])
{
char str[51];
printf("vvedite chislo: ");
gets(str);
unsigned num = 0, i;
for(i=0;str[i]!=0;i++){
num += str[i] - 816;
if(str[i+1] != 0) num *= 16;
}
for(i=0;num>0;i++){
str[i] = num%10 + 816;
num /= 10;
}
str[i] = 0;
for(int j=0;j<i/2;j++){
char ch = str[j];
str[j] = str[i-j-1];
str[i-j-1] = ch;
}
puts(str);
return 0;
}Решение задачи: «Преобразовать число в строке к десятичной системе»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *s = "0x21"; // 33
char *p;
printf("%ld\n", strtol(s, &p, 0));
}
Объяснение кода листинга программы
В данном коде:
- Объявлены две переменные: s (строка) и p (указатель на символ).
- Значение переменной s установлено в
0x21(строка, содержащая число в шестнадцатеричной системе счисления). - В функцию printf() передаются три аргумента:
%ld(формат вывода), s (строка для преобразования), &p (указатель на первый необязательный аргумент функции). - Функция strtol() вызывается с тремя аргументами: s, &p, 0.
- Результатом работы функции strtol() является значение переменной p (которое будет указывать на первый необязательный аргумент функции).
- Значение переменной p выводится на экран с помощью функции printf().
В результате выполнения данного кода на экран будет выведено число 33 (десятичное представление числа, которое соответствует шестнадцатеричному числу
0x21).