Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга_2013_1_часть+.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
813.57 Кб
Скачать

Упражнения и тесты

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);

}

Задачи

Уровень А

    1. В массиве получить разность между наибольшим и наименьшим элементами.

    2. В числовом массиве найти среднеарифметическое значение среди положительных чисел.

    3. Преобразовать целочисленный массив следующим образом: числа, кратные 5, но не кратные 10, уменьшить в 5 раз; числа, кратные 10, уменьшить в 10 раз; остальные увеличить в 10 раз. Дополнительный массив не формировать.

    4. Из массива оценок получить 5, если студент (школьник) отличник, и 0 в противном случае.

    5. Из масива оценок получить 2, если студент (школьник) двоечник, и 0 в противном случае.

В задачах 7 — 9 даны n точек плоскости своими координатами в виде двух массивов x[n] и y[n], где (xi, yi ) — координаты iй точки.

    1. Найти количество точек в каждой из четвертей.

    2. Сколько точек находится внутри кольца, ограниченного окружностями, радиус которых r и R (r < R)? Если r>R, вывести соответствующее сообщение и повторить ввод радиусов.

    3. Найти одну, любую точку, расстояние от которой до заданной точки наименьшее.

Уровень В

  1. Из масива оценок получить средний балл, если нет 1, 2 или 3.

  2. Из массива оценок получить 5, 4, 3 или 2 в зависимости от того, является ли студент (школьник) отличником, хорошистом, троечником или двоечником.

  3. В числовом массиве найти отрицательное наибольшее число, его номер, положительное наименьшее число и его номер. Определить все номера, если таких чисел несколько. Предусмотреть случай, когда положительных (или отрицательных) чисел нет.

  4. В целочисленном массиве найти первое и второе наименьшие числа и количество их повторений. Например, в массиве {11, 2, 99, –10, 10 , –5, –5, 6, –10, –5} первое наименьшее –10 повторяется два раза, второе наименьшее –5 повторяется три раза. Предусмотреть случай, когда все числа одинаковы и второго наименьшего числа нет.

  5. В целочисленном массиве найти количество четных чисел, расположенных между первым и последним нулевыми числами этого массива. Предусмотреть случаи, когда нет нулей, нуль единственный, нет четных чисел между первым и последним нулевыми числами, и вывести соответствующий текст.

  6. Известно, что в массиве есть только числа 0, 1, 2 в любом количестве и порядке следования. Преобразовать массив следующим образом: в начало поместить единицы, затем двойки и, наконец, нули. Например, для массива {2, 1, 1, 2, 0, 2, 0, 1, 2, 2} получим {1, 1, 1, 2, 2, 2, 2, 2, 0, 0}. Дополнительный массив не формировать.

  7. Все элементы массива, не равные нулю, переписать в начало массива, сохраняя их порядок, а нулевые элементы — в конец массива. Можно формировать новый массив (см также уровень С).

  8. Рассортировать одномерный целочисленный массив по возрастанию последней цифры числа. Использовать обменную сортировку.

  9. Вывести элементы массива по одной из диагоналей экрана.

  10. Среди точек плоскости, заданных своими координатами в виде двух массивов, найти все точки, расстояние от которых до заданной точки наименьшее.

  11. Среди точек плоскости, заданных своими координатами в виде двух массивов, найти все пары точек с наименьшим расстоянием между ними.

Уровень С

  1. Все отрицательные элементы массива, не равные нулю, переписать в начало этого же массива, положительные — в его конец. Исходный порядок элементов массива должен сохраниться. Новый массив не формировать.

  2. В целочисленном массиве найти длину самой длинной последовательности одинаковых, подряд идущих чисел и это повторяющееся число. Например, в массиве {5, 2, 5, 5, 5, 2, 2, 2, 7, 7, 7, 7, 2, 0, 5, 7, 8} самая длинная последовательность состоит из четырех семерок.

  3. Даны два упорядоченных числовых массива размерности n и m. Получить из них новый упорядоченный массив размерности n+m, не используя алгоритма сортировки.

  4. Рассортировать одномерный целочисленный массив по возрастанию первой цифры числа. Для сортировки использовать алгоритм выбора наименьшего элемента.

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