Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1_лекция_Основы_языка_С.doc
Скачиваний:
19
Добавлен:
05.06.2015
Размер:
395.78 Кб
Скачать

Int magic; /* магическое число */

Int guess; /* попытка игрока */

magic = rand(); /* генерация магического числа */

printf("Угадай магическое число: ");

scanf("%d", &guess);

if(guess == magic) printf("** Верно **");

return 0;

}

В следующей версии программы для игры в "магическое число" иллюстрируется использование оператора else. В этой версии выводится дополнительное сообщение в случае ложного ответа.

/* Магическое число, программа N2. */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

Int magic; /* магическое число */

Int guess; /* попытка игрока */

magic = rand(); /* генерация магического числа */

printf("Угадай магическое число: ");

scanf("%d", &guess);

if(guess == magic) printf("** Верно **");

else printf("Неверно");

return 0;

}

Оператор ifявляется вложенным, если он вложен, т.е. находится внутри другого оператораifилиelse. В практике программирования вложенные условные операторы используются довольно часто. Во вложенном условном операторе фразаelseвсегда ассоциирована с ближайшимifв том же блоке, если этотifне ассоциирован с другой фразойelse.

Например:

if(i)

{

if(j) statement 1;

If(k) statement 2; /* этот if */

else statement 3; /* ассоциирован с этим else */

}

else statement 4; /* ассоциирован с if(i) */

Последняя фраза else не ассоциирована с if(j) потому, что она находится в другом блоке. Эта фраза else ассоциирована с if(i). Внутренняя фраза else ассоциирована с if(k), потому что этот if — ближайший.

Стандарт С89 допускает 15 уровней вложенности условных операторов, В следующем примере вложенный оператор if используется в модернизированной программе для игры в магическое число. С его помощью играющий получает сообщение о характере ошибки:

/* Магическое число, программа N3. */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

Int magic; /* магическое число */

int guess; /* попытка игрока */

magic = rand(); /* генерация магического числа */

printf("Угадай магическое число: ");

scanf("%d", &guess);

if (guess == magic) {

printf("** Верно **");

printf("Магическое число равно %d\n", magic);

}

else {

printf("** Неверно, ");

if(guess > magic) printf("слишком большое\n");

/* вложенный if */

else printf("слишком малое\n");

}

return 0;

}

Лестница if-else-if

В программах часто используется конструкция, которую называют лестницей if-else-if.

Общая форма лестницы имеет вид

if (выражение) оператор;

else

if (выражение) оператор;

else

if (выражение) оператор;

.

.

.

else оператор;

Операция ?

В языке С определен мощный и удобный оператор, который часто можно использовать вместо оператора вида if-then-else. Этотернарный оператор ?,общий вид которого следующий:

Выражение1 ? Выражение2 : Выражение3;

Обратите внимание на использование двоеточия. Оператор ? работает следующим образом:

  • сначала вычисляется Выражение1,

  • если оно истинно, то вычисляется Выражение2 и его значение присваивается всему выражению;

  • если Выражение1 ложно, то вычисляется Выражение3 и его значение присваивается всему выражению.

В примере

x = 10;

y = x>9 ? 100 : 200;

переменной у будет присвоено значение 100.

Если бы хбыло меньше 9, то переменнойубыло бы присвоено значение 200. Эту же процедуру можно написать, используя оператор if-else:

x = 10;

if(x>9) y = 100;

else y = 200;

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