Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число - C (СИ)
Формулировка задачи:
Решение задачи: «Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число»
- #include <stdio.h>
- #include <ctype.h>
- int main()
- {
- char s[100];
- gets(s);
- int type = 0;
- for (char *p = s; *p; p++)
- {
- int t;
- switch (tolower(*p))
- {
- case '0':
- case '1':
- t = 2; break;
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- t = 8; break;
- case '8':
- case '9':
- t = 10; break;
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- t = 16; break;
- default:
- t = 666;
- }
- if (t > type)
- type = t;
- }
- switch (type)
- {
- case 2: puts("Base: 2 or 8 or 10 or 16"); break;
- case 8: puts("Base: 8 or 10 or 16"); break;
- case 10: puts("Base: 10 or 16"); break;
- case 16: puts("Base: 16"); break;
- default: puts("Wrong number"); break;
- }
- return 0;
- }
Объяснение кода листинга программы
В этом коде определена функция main(), которая получает строку от пользователя с помощью функции gets() и сохраняет её в массиве s. Затем инициализируется переменная type значением 0. Далее, в цикле for перебираются все символы строки. Для каждого символа проверяется его значение в нижнем регистре с помощью функции tolower(). В зависимости от значения символа, переменной t присваивается соответствующее значение: 2 для '0' и '1', 8 для '2' - '7', 10 для '8' и '9', 16 для 'a' - 'f'. Если значение переменной t больше значения переменной type, то type присваивается значение t. После цикла, в зависимости от значения переменной type, выводится соответствующее сообщение с помощью функции puts(). В конце функции main() возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д