Преобразовать число в строке к десятичной системе - 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
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д