Определить объединение двух полей. Первое поле – массив из двух байт, второе – слово - 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;
}

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

  1. Объявление и инициализация переменной data типа union TData
  2. Считывание значения второго поля (WORD) из стандартного ввода с помощью функции scanf
  3. Приведение значения второго поля (WORD) к ближайшему кратному трём с помощью функции RoundTo3
  4. Проверка значения второго поля (WORD) и уменьшение его на 29, если оно больше 100
  5. Увеличение значения второго поля (WORD) на 119, если оно меньше или равно 100
  6. Вывод значений первого поля (unsigned char bytes[2]) с помощью функции printf
  7. Возврат 0, чтобы указать, что программа успешно завершилась

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


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

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

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