Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_новое.DOC
Скачиваний:
7
Добавлен:
28.09.2019
Размер:
486.4 Кб
Скачать

Void main(void)

{

int s, x, n=0;

randomize(); // Инициализация генератора случайных чисел

s=random(100)+1; // Генерирует случайные числа от 1 до 100

do

{

printf("Введите число от 1 до 100 : ");

scanf("%d",&x);

n++;

if (s<x) printf("Заданное число меньше\n");

if (s>x) printf("Заданное число больше\n");

} while(s-x); // Выход из цикла, когда (s-x) равно нулю

printf("Вы угадали число!\n");

printf("На угадывание затратили %d попыток\n",n);

}

Вложенные циклы

Когда один цикл находится внутри другого, то говорят, что это вложенные циклы. Они часто используются при работе с матрицами (см. примеры 5.9 и 5.10):

// Пример 5.9.

// Найти сумму элементов второго столбца матрицы 3х3

#include <stdio.h>

Void main(void)

{

int m[3][3] = {{5, 1, 7}, {3, 12, 9}, {2, 4, 10}};

int i,j,sum;

printf("Матрица исходных данных\n");

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

{

for(j=0; j<3; j++) printf("%3d ",m[i][j]);

printf("\n");

}

sum=0; j=1;

for(i=0; i<3; i++) sum+=m[i][j];

printf("Сумма элементов второго столбца матрицы равна %5d\n",sum);

}

// Пример 5.10.

// Вложенные циклы и оператор while с выходом continue

// Сформировать матрицу неотрицательных элементов

#include <stdio.h>

#define LINE 3

#define COLUMN 3

Void main(void)

{

Int I,j,score;

Int scores[line][column];

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

{

j=0;

while(j<COLUMN)

{

printf("Введите следующее значение %d : ",i);

scanf("%d",&score);

if (score<0)

{

printf("Повторите ввод\n");

continue;

}

else scores[i][j++]=score;

}

}

printf("Матрица значений\n");

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

{

for(j=0; j<COLUMN; j++)

printf("%d ",scores[i][j]);

printf("\n");

}

}

Оператор безусловного перехода

Форма оператора: goto метка;

Метка — это имя, служащее в качестве метки, которая обычно пишется прописными буквами, например

ABC2: x = 3;

...................

goto ABC2;

Одно из полезных применений оператора goto — выход из вложенных циклов:

for ( )

{

while ( )

{

for ( )

{

.................

goto exit;

.................

}

}

}

exit: printf(“Быстрый выход из вложенных циклов”);

Оператор break

Оператор break имеет два применения:

  1. окончание варианта case в операторе switch (см. пример 5.1);

  2. немедленное окончание цикла, не связанное с проверкой обычного условия окончания цикла:

// Пример 5.11.

// Оператор break быстрого выхода из цикла

#include <stdio.h>

Void main(void)

{

int i;

unsigned k;

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

{

k=i*i;

if (k>=32767) break;

else printf("Квадрат числа %d равен %u\n",i,k);

}

}

Оператор continue

Оператор continue используется внутри цикла, когда надо завершить текущую итерацию и, не выполняя последующие операторы, передать управление на начало следующей итерации цикла. В циклах while и do...while происходит переход к следующей итерации без проверки условия (см. пример 5.10). В цикле for наращивается значение управляющей переменной:

// Пример 5.12.

// Вывести натуральные числа, кратные 5

// Оператор continue

#include <stdio.h>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]