Определить, содержит ли заданная строка двоичное, восьмеричное, десятичное или шестнадцатеричное число - 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, что означает успешное завершение работы программы.