Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Си.doc
Скачиваний:
3
Добавлен:
15.11.2019
Размер:
2.72 Mб
Скачать

Int main()

{

Int num, sum, factor;

printf(“\nСовершенные числа от %d до %d:\n”, MIN, MAX);

for (num = MIN; num <= MAX; num += 2)

{

sum = 1;

for (factor = 2; factor < num; factor++)

{

if (num % factor == 0)

sum += factor;

}

if (sum == num)

printf(“\n%d”, num);

}

return 0;

}

Эта программа осуществляет поиск всех совершенных чисел от 6 до 10000.

Для досрочного прекращения выполнения цикла и выхода из него используется оператор прерывания break:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define MIN 2

#define MAX 10000

Int main()

{

for (int n = MIN; n <= MAX; n++)

{

for (int i = MIN; i < n; i++)

{

if (n % i == 0)

break;

}

if (i == n)

printf(“\n%d”, n);

}

return 0;

}

Эта программа осуществляет поиск всех простых чисел от 2 до 1000.

Во вложенных циклах команда break прекращает выполнение только того цикла, в котором стоит.

Для пропуска одной итерации цикла (перехода к следующей итерации) используется команда продолжения continue:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#define MIN 3

#define MAX 100

Int main()

{

for (int number = MIN; number <= MAX; number++)

{

If (number % 3)

continue;

printf(“\n%d”, number);

}

return 0;

}

Эта программа осуществляет поиск всех чисел, кратных трем, от 3 до 100.

Примеры:

1. Вычислить Sn – сумму n первых натуральных чисел

Алгоритм: Sn = 0

для i от 1 до n выполнять

Sn = Sn + i

Программа:

#include <stdio.h>

#include <conio.h>

#include <math.h>

Int main()

{

int n, sn=0;

printf(“\nДо какого числа суммировать:”);

scanf(“%d”, &n);

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

{

sn+=i;

}

printf(“\nСумма чисел от 1 до %d равна %d ”, n, sn);

return 0;

}

  1. Рассортировать элементы заданного случайным образом целочисленного вектора vector[n] методом обменной сортировки (пузырька):

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <time.h>

Int main()

{

Int I, m, vector_min, vector_max, temp;

time_t t; // текущее время для инициализации

// генератора случайных чисел

srand((unsigned) time(&t)); // инициализация генератора // случайных чисел

printf("\nВведите нижнюю границу:");

scanf(“%d”, &vector_min);

printf("\nВведите верхнюю границу:");

scanf(“%d”, &vector_max);

printf("\nВведите размер вектора:");

scanf(“%d”, &n);

Int vector[n];

printf("\nИсходный вектор:\n");

m = vector_max–vector_min + 1;

for (i=0; i<n; i++)

{

// получение случайного числа в диапазоне

// от vector_min до vector_max

vector[i]=rand()% m + vector_min;

printf(" %5d", vector[i]);

}

printf("\n");

for (m=n-2; m>=0 ;m--)

for (i=0; i<=m ;i++)

if (vector[i] > vector[i+1])

{

temp=vector[i];

vector[i]=vector[i+1];

vector[i+1]=temp;

}

printf("\nОтсортированный вектор:\n");

for (i=0; i<n; i++)

{

printf(" %5d", vector[i]);

}

printf("\n");

return 0;

}

  1. Рассортировать элементы заданного случайным образом целочисленного вектора vector[n] методом Шелла (обменная сортировка с убывающим шагом). В этом случае массив делится на группы по два элемента и производится сортировка в каждой группе: максимальный элемент ставится на второе место. После этого массив делится на группы по четыре элемента, и они снова сортируются. Количество элементов в сортируемой группе удваивается до тех пор, пока не остается одна группа, включающая все элементы массива, которая и сортируется окончательно:

#include <stdio.h>

#include <conio.h>

#include <math.h>

#include <time.h>