Определить объединение двух полей. Первое поле – массив из двух байт, второе – слово - C (СИ)
Формулировка задачи:
Помогите написать программу( лучше с комментариями чтобы разобраться)
Определить объединение из двух полей Первое поле - массив из двух байт, второе - слово Ввести случайное целое число в диапазоне от 5 до 200 Округлить его до ближайшего целого, кратного 3 Если число больше 100 - вычесть из него 29, если число меньше - прибавить 119. Вывести полученный результат, старший байт результата и младший байт результата в шестнадцатеричном виде
Решение задачи: «Определить объединение двух полей. Первое поле – массив из двух байт, второе – слово»
textual
Листинг программы
- #include <stdio.h>
- #include <Windows.h>
- union TData
- {
- unsigned char bytes[2];
- WORD word;
- };
- WORD RoundTo3(const WORD a)
- {
- if (a % 3 == 1) return a - 1;
- else if (a % 3 == 2) return a + 1;
- else return a;
- }
- int main(void)
- {
- union TData data;
- scanf("%hu", &data.word);
- data.word = RoundTo3(data.word);
- if (data.word > 100) data.word -= 29;
- else data.word += 119;
- printf("LO = 0x%.2hhX, HI = 0x%.2hhX\n", data.bytes[0], data.bytes[1]);
- return 0;
- }
Объяснение кода листинга программы
- Объявление и инициализация переменной
data
типа union TData - Считывание значения второго поля (WORD) из стандартного ввода с помощью функции scanf
- Приведение значения второго поля (WORD) к ближайшему кратному трём с помощью функции RoundTo3
- Проверка значения второго поля (WORD) и уменьшение его на 29, если оно больше 100
- Увеличение значения второго поля (WORD) на 119, если оно меньше или равно 100
- Вывод значений первого поля (unsigned char bytes[2]) с помощью функции printf
- Возврат 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д