БИЛЕТ 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++;
}
}