БИЛЕТ 1.
1. Язык С++ и его характеристики.
1). Поддерживает характерные для типовой системы – объекты: числа, строки, структуры, различные данные…
2). Имеет хорошо развитые средства управления ходом программы: блочная структура ветвления, циклы, области видимости. Поэтому - язык высокого уровня.
3). Оперирует битами, байтами, адресами, размерами объектов памяти и их взаимным расположением. Допускает программирование в абсолютных и относительных адресах.
4) Обладает машинно-зависимыми свойствами.
5). Отличие от "Классического Си”:
- структура (struct) получила ряд свойств базового типа данных;
- введено понятие элемента-функции. Элементы-функции играют роль своеобразного интерфейса для использования структурированной переменной;
- расширены возможности транслятора по контролю и преобразованию параметров при вызове функции (ссылка, перегрузка функций, параметры по умолчанию). Введен обязательный контроль параметров функций с использованием прототипов.
2. Оператор цикла while.
while (выражение) оператор
Он работает следующим образом. Проверяется условие в скобках. Если оно истинно, то выполняется тело цикла. Затем опять проверяется условие, и если оно истинно, то тело цикла выполняется снова. Когда условие становится ложным, цикл завершается, и вычисления продолжаются с оператора, следующего за циклом.
Телом цикла while может быть один или несколько операторов, заключенных в фигурные скобки, или один оператор без скобок.
Если условие истинно (принимает не нулевое значение), то выполняется блок из одного или нескольких операторов и происходит возврат на проверку условия. Если условие ложно, происходит выход из цикла. Условие может быть составлено из нескольких выражений, с использованием || (логическое сложение "или") и &&(логическое умножение "и")
Оператор while удобно использовать для проверки ввода пользователя.
Цикл while исп-ся в след. случаях:
-обратилось в 0 выр. в заголовке
-в теле цикла встретился оператор break
-в теле цикла встретился оператор return
Предостережение. При использовании цикла типа while случаются ошибки, связанные с лишним шагом при выполнении цикла.
В сумму войдет один лишний элемент (мусор). Попытка обратиться к сотому элементу может обойтись без последствий, если использовать его значение, при этом, лишь ошибка в вычислении. Однако, если что-то присваивается этому элементу с номером size, то последствия могут быть серьезными (зависание проги).
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]=-20;
b[0]= 20;
for (int i=1;i<N;i++)
a[i]=a[i-1]+random(10);
for (i=1;i<M;i++)
b[i]=b[i-1]-random(10);
int x=0,y=M-1;
i=0;
while (!c[N+M-1])
{
if (((a[x]>=b[y])|(x>N-1))&(y<=M-1))
{
c[i]=b[y];
i++;
y--;
}
else if (((a[x]<=b[y])|(y<0))&(x>=0))
{
c[i]=a[x];
i++;
x++;
}
}
}
4. Предложите два варианта функции вычисления суммы первых n чисел Фибоначчи.
# include <stdio.h>
int fib(int x)
{
if ((x==1)|(x==2)) return 1;
else return (fib(x-1)+fib(x-2));
}
void main()
{ int sum=0;
const n=7;
for (int i=1;i<=n;i++)
sum+=fib(i);
printf("%d",sum);
}