
- •Часть 1
- •18 Сентября 2012 г., протокол № 1
- •Предисловие
- •§ 1. Основные понятия программы
- •1.2. Директива препроцессора #include
- •Структура программы
- •Комментарии
- •Ключевые слова, идентификаторы, переменные
- •§ 2. Ввод, вывод
- •§ 3. Выражения
- •3.1. Константы
- •Непосредственно записать в выражении;
- •3.2. Операции и их приоритет
- •3.3. Операции отношения и логические операции
- •3.4. Операция присваивания
- •§ 4. Программирование ветвлений
- •4.1. Оператор if
- •4.2. Тернарная операция
- •4.3. Оператор выбора switch
- •Г л а в а 2 циклы
- •§ 1. Оператор while
- •§ 2. Оператор break
- •§ 3. Оператор do … while
- •§ 4. Оператор for
- •Г л а в а 3 Введение в массивы
- •§ 1. Основные понятия
- •§ 2. Способы определения массивов
- •§ 3. Вывод массива. Функции printf и cprintf
- •§ 4. Типы задач при работе с массивами
- •Упражнения и тесты
- •Г л а в а 4 модульное программирование. Функции
- •§1. Функции без результатов. Параметры-значения
- •1.1. Примеры. Правила оформления и вызова функций
- •Формальные и фактические параметры
- •Передача параметров по значению
- •§ 2. Функции типа void с результатами
- •2.1. Вычислeниe бeсконeчных сумм
- •2.2. Что такое ссылочный тип
- •2.3. Параметры ссылочного типа
- •§ 3. Функции, отличные от void. Оператор return
- •§ 4. Область действия имён. Локальные и глобальные имена
- •§ 5. Встраиваемые (inline) функции
- •§ 6. Параметры по умолчанию
- •§ 7. Перегрузка функций
- •7. Сравнение функций типа void и отличных от типа void.
- •Г л а в а 5 введение в объектно-оРиентированное программирование
- •§ 1. Первое знакомство с ооп
- •§ 2. Класс. Поля и методы класса
- •§ 3. Создание объектов. Конструктор
- •Упражнения и тесты
- •Оглавление
- •3.1. Константы …………………………………………….………..….........…8
- •Упражнения и тесты …….………………..………………………….…………....19
- •Методы программирования:
- •Лекции, примеры, тесты
- •Пособие для студентов механико-математического факультета
- •В двух частях
- •Часть 1
Упражнения и тесты
1. Что будет выведено в каждом из четырех вариантов?
const n=10; int Sum, i;
int a[n]={11, 2, -3, -4, 5 , 0, 7, -8, 9 };
/*Вариант 1*/ Sum=0;
for ( i=0; i<n; i++) if (a[i]<0) Sum+=a[i]; cout<<Sum<<" ";
/*2*/ for ( i=0, Sum=0; i<n; ) { if (a[i]<0) Sum+=a[i++]; else i++;
cout<<Sum<<" "; }
/*3*/ for ( Sum= i=0; i<n-1; Sum+=a[++i] ) ; cout<<Sum;
/*4*/ for ( Sum=0, i=-1; i<n-1; ) { Sum+=a[++i] ; cout<<" "<<Sum; }
2. Что будет выведено в каждом из вариантов, отличающихся наличием фигурных скобок и их расстановкой? Как и в предыдущем упражнении, объявлен и определен конкретный массив.
int K=0; cout<<endl;
/*Вариант 1*/ for (int I=0; I<n; I++) if (a[I]>0) K++; cout<<" "<<K;
/*2*/ for (int I=0; I<n; I++) { if (a[I]>0) K++; } cout<<" "<<K;
/*3*/ for (int I=0; I<n; I++) { if (a[I]>0) K++; cout<<" "<<K; }
/*4*/ for (int I=0; I<n; I++) if (a[I]>0) { K++; cout<<" "<<K; }
/*5*/ for (int I=0; I<n; I++) if (a[I]>0) K++; else cout<<" "<<K;
3. Если ошибок нет, записать, что будет выведено, или указать, где ошибка.
int i=9; const n=10;
int a[n]={1,2,-3,-4, -5, 6,7,8, 90, -100 }; //1
for (int S=0;;) //2
{ if (i<0) break; //3
if (a[i]>0 ) //4
{ S+=a[i]; //5
cout<< S<<" "; } //6
i--; } //7
4. Что будет выведено?
int s=0, k=0; const n=10; int a[n]={1, 2, -3, -4, -5 , 6, 7, 8 };
for (int i=0;i<n; i++)
{ if (a[i]>0) continue; s+=a[i];
cout<<endl<< s<<" "<<(++k);
}
Задачи
Уровень А
В массиве получить разность между наибольшим и наименьшим элементами.
В числовом массиве найти среднеарифметическое значение среди положительных чисел.
Преобразовать целочисленный массив следующим образом: числа, кратные 5, но не кратные 10, уменьшить в 5 раз; числа, кратные 10, уменьшить в 10 раз; остальные увеличить в 10 раз. Дополнительный массив не формировать.
Из массива оценок получить 5, если студент (школьник) отличник, и 0 в противном случае.
Из масива оценок получить 2, если студент (школьник) двоечник, и 0 в противном случае.
В задачах 7 — 9 даны n точек плоскости своими координатами в виде двух массивов x[n] и y[n], где (xi, yi ) — координаты iй точки.
Найти количество точек в каждой из четвертей.
Сколько точек находится внутри кольца, ограниченного окружностями, радиус которых r и R (r < R)? Если r>R, вывести соответствующее сообщение и повторить ввод радиусов.
Найти одну, любую точку, расстояние от которой до заданной точки наименьшее.
Уровень В
Из масива оценок получить средний балл, если нет 1, 2 или 3.
Из массива оценок получить 5, 4, 3 или 2 в зависимости от того, является ли студент (школьник) отличником, хорошистом, троечником или двоечником.
В числовом массиве найти отрицательное наибольшее число, его номер, положительное наименьшее число и его номер. Определить все номера, если таких чисел несколько. Предусмотреть случай, когда положительных (или отрицательных) чисел нет.
В целочисленном массиве найти первое и второе наименьшие числа и количество их повторений. Например, в массиве {11, 2, 99, –10, 10 , –5, –5, 6, –10, –5} первое наименьшее –10 повторяется два раза, второе наименьшее –5 повторяется три раза. Предусмотреть случай, когда все числа одинаковы и второго наименьшего числа нет.
В целочисленном массиве найти количество четных чисел, расположенных между первым и последним нулевыми числами этого массива. Предусмотреть случаи, когда нет нулей, нуль единственный, нет четных чисел между первым и последним нулевыми числами, и вывести соответствующий текст.
Известно, что в массиве есть только числа 0, 1, 2 в любом количестве и порядке следования. Преобразовать массив следующим образом: в начало поместить единицы, затем двойки и, наконец, нули. Например, для массива {2, 1, 1, 2, 0, 2, 0, 1, 2, 2} получим {1, 1, 1, 2, 2, 2, 2, 2, 0, 0}. Дополнительный массив не формировать.
Все элементы массива, не равные нулю, переписать в начало массива, сохраняя их порядок, а нулевые элементы — в конец массива. Можно формировать новый массив (см также уровень С).
Рассортировать одномерный целочисленный массив по возрастанию последней цифры числа. Использовать обменную сортировку.
Вывести элементы массива по одной из диагоналей экрана.
Среди точек плоскости, заданных своими координатами в виде двух массивов, найти все точки, расстояние от которых до заданной точки наименьшее.
Среди точек плоскости, заданных своими координатами в виде двух массивов, найти все пары точек с наименьшим расстоянием между ними.
Уровень С
Все отрицательные элементы массива, не равные нулю, переписать в начало этого же массива, положительные — в его конец. Исходный порядок элементов массива должен сохраниться. Новый массив не формировать.
В целочисленном массиве найти длину самой длинной последовательности одинаковых, подряд идущих чисел и это повторяющееся число. Например, в массиве {5, 2, 5, 5, 5, 2, 2, 2, 7, 7, 7, 7, 2, 0, 5, 7, 8} самая длинная последовательность состоит из четырех семерок.
Даны два упорядоченных числовых массива размерности n и m. Получить из них новый упорядоченный массив размерности n+m, не используя алгоритма сортировки.
Рассортировать одномерный целочисленный массив по возрастанию первой цифры числа. Для сортировки использовать алгоритм выбора наименьшего элемента.
Точки плоскости, заданные в виде двух одномерных массивов, рассортировать по возрастанию расстояния от начала координат. Использовать сортировку вставками.