Вторник, 21.05.2024, 04:53
Приветствую Вас, Гость

БИЛЕТ 4.

1.     Символьный тип данных, представление символов в памяти.

     char - единичный байт, который может содержать один символ из допустимого символьного набора;

     Квалификаторы signed (со знаком) или unsigned (без знака) можно применять к типу char. Значения unsigned всегда положительны или равны нулю. При вводе\выводе символов используют спецификатор %c.

Символьные const заключают в апострофы (‘A’, ‘\0’). Некоторые неграфические символы могут быть изображены в виде escape- последовательности, начинающиеся с обратного слэша. (\n, \t, \r, \v)

Символьный тип (char) хранит числа в диапазоне  от -128 до 127. Ячейка памяти, отводимая под char занимает ровно 1 байт памяти. Поэтому, тип char можно использовать для представления одного байта памяти. Помимо этого, данный тип используют для хранения кода символа, согласно кодовой таблице ASCII. Коды символов лежат в диапазоне от 0 до 255. Символ с кодом 0 является зарезервированным и используется для обозначения конца строки в памяти.

2.     Оператор ветвления if- else.

     Оператор if-else используется для принятия решения. Формально ее синтаксисом является:

if (выражение)

    оператор1

else

    оператор2

причем else-часть может и отсутствовать. Сначала вычисляется выражение, и, если оно истинно (т. е. отлично от нуля), выполняется оператор1. Если выражение ложно (т. е. его значение равно нулю) и существует else-часть, то выполняется оператор2.

Так как if просто проверяет числовое значение выражения, условие иногда можно записывать в сокращенном виде. Так, запись

if (выражение) короче, чем if ( выражение != 0 )

Иногда такие сокращения естественны и ясны, в других случаях, наоборот, затрудняют понимание программы.

Отсутствие else-части в одной из вложенных друг в друга if-конструкций может привести к неоднозначному толкованию записи. Эту неоднозначность разрешают тем, что else связывают с ближайшим if, у которого нет своего else. Например, в

if (n > 0)

    if (а > b)

        z = a;

    else

        z = b;

else относится к внутреннему if, что мы и показали с помощью отступов. Если нам требуется иная интерпретация, необходимо должным образом расставить фигурные скобки:

if (n > 0) {

    if (а > b)

        z = a;

}

else

    z = b;

Конструкция

if (выражение)

    оператор

else if (выражение)

    оператор

else if (выражение)

    оператор

else if (выражение)

    оператор

else

    оператор

встречается так часто, что о ней стоит поговорить особо. Приведенная последовательность операторов if - самый общий способ описания многоступенчатого принятия решения. Выражения вычисляются по порядку; как только встречается выражение со значением "истина", выполняется соответствующая ему оператор, на этом последовательность проверок завершается. Здесь под словом оператор имеется в виду либо одна оператор, либо группа операторов в фигурных скобках.

     Последняя else-часть срабатывает, если не выполняются все предыдущие условия. Иногда в последней части не требуется производить никаких действий, в этом случае фрагмент

 else

    оператор

можно опустить или использовать для фиксации ошибочной ("невозможной") ситуации.


3.   Даны два массива. Массив А состоит из N элементов , массив В состоит из М элементов. Оба массива отсортированы по убыванию. Разработать программу для слияния этих массивов в отсортированный по неубыванию массив С.

# include <stdio.h>

# include <stdlib.h>

  const N=10,M=10;

  int a[N],b[M],c[N+M];

void main()

{

  randomize();

  a[0]=-5;

  b[0]=-5;

  for (int i=1;i<N;i++)

    {

      a[i]=a[i-1]-random(3);

      b[i]=b[i-1]-random(3);

    }

  int x=M-1,y=N-1;

  i=0;

  while ((x>=0)|(y>=0))

    {

      if (((a[x]<=b[y])|(y<0))&(x>=0))

            {

              c[i]=a[x];

              i++;

              x--;

            }

      else if (((a[x]>=b[y])|(x<0))&(y>=0))

            {

              c[i]=b[y];

              i++;

              y--;

            }

    }

}


4.   Напишите функцию разложения натурального числа на простые множители

# include <stdio.h>

void main()

{

  const N=15120;

  long int n=N;

  int mas[10];

  int kol=0;

  for (int i=2;i<=n;)

    {

      if ((n%i)==0)

            {

              mas[kol]=i;

              kol++;

              while ((n%i)==0) n/=i;

            }

      else i++;

    }

}