Задача на детерминированный цикл.
Пример. Сформировать массив целых чисел X(N), элементами которого являются случайные числа в диапазоне [-20..20]. Найти максимальный элемент и его номер.
#include <stdlib.h>
#include <stdio.h>
void main ()
{
const int N=100;
int a[N],n,max,imax;
do
{
printf ("\nEnter n (0-%d%s", N, "): ");
scanf("%d", &n);
}
while (n<0 || n>N);
printf ("\nArray: \n");
//randomize();// инициализация счетчика случайных чисел
for (int i=0;i<n;i++)
{
a[i]= rand()%41-20; // генерируем массив случайных чисел
//в диапазоне [-20..20]
printf ("a[%d%s%d%s",i,"]=",a[i],"\n");
}
max=a[0];
for(int i=1;i<n;i++)
if (a[i]>max) {max=a[i]; imax=i;}
printf ("\nmax = a[%d%s%d",imax, "]= ",max);
}
Задача на итерационный цикл.
Дано натуральное число N. Подсчитать сумму его цифр.
# include <iostream.h>
void main()
{
long n,m;
printf( “Enter n”);
scanf(“%d”, &n);
m=n; // Сохранили значение исходного числа
int sum=0;
while (m>0)
{ sum+=m%10; m/=10;}
printf (“sum = %d”,sum);
}
Задача на вложенные циклы.
Сформировать матрицу A(10,10) следующего вида
# include <iostream.h>
# include <iomanip.h>
void main ()
{ const int N=10;
static int a[N][N]; //статический массив инициализируется
//нулями
for (i=0; i<N; i++)
for (j=0; j<N; j++)
if (i>=j) a[i][j]=i-j+1 //условие попадания под главную
// диагональ
for (i=0; i<N; i++) // печать матрицы
{
for (j=0; j<N; j++) printf (“%3d”,a[i][j]);//под каждый элемент отводится
|
|
//3 позиции, что обеспечивает
// красивый вывод матрицы
printf(“\n”);
}
}
Как видно из примеров основные три конструкции программирования (цепочка, ветвление, цикл) можно комбинировать произвольным образом, получая программы любой сложности.
Кроме конструкций следования, ветвления, мультиветвления и цикла, существует еще один блок конструкций, изменяющих активную точку выполнения программы – конструкции передачи управления.
1. Конструкция безусловного перехода goto, который имеет формат:
goto идентификатор;
где идентификатор – имя метки оператора, расположенного в той же функции, где используется конструкция безусловного перехода. Метка – это обычный идентификатор, после которого ставится двоеточие и следует некоторый оператор. Использование конструкции goto необходимо сводить к минимуму.
При использовании goto следует придерживаться 3 строгих правил:
- не входить внутрь любого блока извне;
- не входить внутрь условной конструкции, переключателя, цикла извне;
- не перескакивать через описания, содержащие инициализацию объектов.
Однако в двух случаях использование goto действительно обосновано
|
|
- при необходимости выйти из вложенных циклов или переключателей;
- переход из нескольких мест программы к одному участку, который нельзя по каким-либо причинам оформить в виде функции.
Пример, смотри в книгах!!!
2. Конструкция принудительного выхода из цикла и переключателя break (можно использовать только в циклах и переключателях). Передает управление на оператор следующий за конструкцией цикла. (Умножение чисел, где встречается ноль)
3. Конструкция перехода к следующей итерации continue (применяется только в циклах). С его помощь завершается текущая итерация и начинается проверка условий дальнейшего продолжения цикла. Типичный пример использования continue - подсчитать сумму только положительных элементов одномерного массива.
for (s=0,i=0;i<n;i++)
{
if (x[i]<=0) continue;
s+=x[i];
}
4. Конструкция возврата из функции return. (Будет рассмотрена в теме «Функции»).
Дата добавления: 2021-01-20; просмотров: 66; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!