Преобразовать число в строке к десятичной системе - 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));
}

Объяснение кода листинга программы

В данном коде:

  1. Объявлены две переменные: s (строка) и p (указатель на символ).
  2. Значение переменной s установлено в 0x21 (строка, содержащая число в шестнадцатеричной системе счисления).
  3. В функцию printf() передаются три аргумента: %ld (формат вывода), s (строка для преобразования), &p (указатель на первый необязательный аргумент функции).
  4. Функция strtol() вызывается с тремя аргументами: s, &p, 0.
  5. Результатом работы функции strtol() является значение переменной p (которое будет указывать на первый необязательный аргумент функции).
  6. Значение переменной p выводится на экран с помощью функции printf(). В результате выполнения данного кода на экран будет выведено число 33 (десятичное представление числа, которое соответствует шестнадцатеричному числу 0x21).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы