p align="left">} case 3: b-=c; break; : } Операторы циклаОператор цикла forОператор for - это наиболее общий способ организации цикла. Он имеет следующий формат: for ( выражение 1 ; выражение 2 ; выражение 3 ) тело Выражение 1 обычно используется для установления начального значения переменных, управляющих циклом. Выражение 2 - это выражение, определяющее условие, при котором тело цикла будет выполняться. Выражение 3 определяет изменение переменных, управляющих циклом после каждого выполнения тела цикла. Схема выполнения оператора for: 1. Вычисляется выражение 1. 2. Вычисляется выражение 2. 3. Если значения выражения 2 отлично от нуля (истина), выполняется тело цикла, вычисляется выражение 3 и осуществляется переход к пункту 2, если выражение 2 равно нулю (ложь), то управление передается на оператор, следующий за оператором for. Существенно то, что проверка условия всегда выполняется в начале цикла. Это значит, что тело цикла может ни разу не выполниться, если условие выполнения сразу будет ложным. Пример: int main() { int i,b; for (i=1; i<10; i++) b="i*i;" return 0; } В этом примере вычисляются квадраты чисел от 1 до 9. Некоторые варианты использования оператора for повышают его гибкость за счет возможности использования нескольких переменных, управляющих циклом. Пример: int main() { int top, bot; char string[100], temp; for ( top=0, bot=100 ; top < bot ; top++, bot--) { temp=string[top]; string[bot]=temp; } return 0; } В этом примере, реализующем запись строки символов в обратном порядке, для управления циклом используются две переменные top и bot. Отметим, что на месте выражение 1 и выражение 3 здесь используются несколько выражений, записанных через запятую, и выполняемых последовательно. Другим вариантом использования оператора for является бесконечный цикл. Для организации такого цикла можно использовать пустое условное выражение, а для выхода из цикла обычно используют дополнительное условие и оператор break. Пример: for (;;) { ... ... break; ... } Так как согласно синтаксису языка С оператор может быть пустым, тело оператора for также может быть пустым. Такая форма оператора может быть использована для организации поиска. Пример: for (i=0; t[i]<10 ; i++) ; В данном примере переменная цикла i принимает значение номера первого элемента массива t, значение которого больше 10. Оператор цикла с предусловием whileОператор цикла while называется циклом с предусловием и имеет следующий формат: while (выражение) тело ; В качестве выражения допускается использовать любое выражение языка Си, а в качестве тела любой оператор, в том числе пустой или составной. Схема выполнения оператора while следующая: 1. Вычисляется выражение. 2. Если выражение ложно, то выполнение оператора while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполняется тело оператора while. 3. Процесс повторяется с пункта 1. Оператор цикла вида for (выражение-1; выражение-2; выражение-3) тело ; может быть заменен оператором while следующим образом: выражение-1; while (выражение-2) { тело выражение-3; } Так же как и при выполнении оператора for, в операторе while вначале происходит проверка условия. Поэтому оператор while удобно использовать в ситуациях, когда тело оператора не всегда нужно выполнять. Внутри операторов for и while можно использовать локальные переменные, которые должны быть объявлены с определением соответствующих типов. Оператор цикла с постусловием do-whileОператор цикла do while называется оператором цикла с постусловием и используется в тех случаях, когда необходимо выполнить тело цикла хотя бы один раз. Формат оператора имеет следующий вид: do тело while (выражение); Схема выполнения оператора do while : 1. Выполняется тело цикла (которое может быть составным оператором). 2. Вычисляется выражение. 3. Если выражение ложно, то выполнение оператора do while заканчивается и выполняется следующий по порядку оператор. Если выражение истинно, то выполнение оператора продолжается с пункта 1. Чтобы прервать выполнение цикла до того, как условие станет ложным, можно использовать оператор break. Операторы while и do while могут быть вложенными. Пример: int i,j,k; ... i=0; j=0; k=0; do { i++; j--; while (a[k] < i) k++; } while (i<30 && j<-30); Практические заданияУбираем оператор gotoЗапишите без оператора goto следующий фрагментm: if(A) { B; goto m; } Упрощаем логические выраженияПерепишите операторы условного перехода так, чтобы их условия не содержали логических операций.if(A && B || !C) D; else if(B || C) E; else F; Взаимозаменяемость цикловВычислить факториал n! тремя способами с помощью трех видов цикла.Компактный forЗапишите двойной циклfor (int i = 0; i<5; i++) { printf(“\n”); for (int j = 0; j<4; j++) printf(“%3d”, i*j); } с помощью одинарного цикла с теми же счетчиками i, j. Обходимся без операторов условного переходаЗамените оператор if(A) B; Эквивалентным оператором цикла for. Лабораторные заданияЛинейное уравнениеОператоры if-else if, switch. Написать программу, которая решает линейное уравнение a • x + b = 0. Использовать операторы if-else if. Логические выражения в условиях этих операторов не должны содержать логических операций && и ||. Предусмотреть четыре возможных исхода при решении уравнения:- нет решения, - найдено единственное решение, - любое число является решением, - решение единственное, но не входит в диапазон типа переменной x. В операторе if-else if определить некоторую переменную flag, которая принимает четыре значения, соответствующих возможному исходу решения. Вывод текстовой информации с результатами решения организовать с использованием оператора switch, условие которого содержит flag. Выход из программы должен быть единственным. Организовать проверку корректности данных при вводе коэффициентов a и b. Ввод русской буквыОператоры while, switch. С клавиатуры вводятся символы. После анализа символа программа выводит на экран одно из следующих сообщений:- русская гласная буква такая-то, - русская согласная буква такая-то, - английская буква такая-то, - символ псевдографики такой-то, - другой символ. В программе вместо числовых констант вида 128 использовать символьные константы вида `А'. Обработать символы с расширенным кодом. Выход из программы происходит по нажатию клавиши Escape. Таблица умноженияИспользование двойного цикла for. В программе вводятся шестнадцатеричные числа m и n, после чего на экран выводится таблица умножения в шестнадцатеричной системе счисления следующего видаТаблица 1. Из таблицы должно быть видно, что например, 112 = 121, 122 = 144, 132 = 169. При больших размерах таблицу целесообразно выводить в файл. Это можно сделать из командной строки DOS с помощью команды tabl.exe >> tabl.txt ASCII-таблицаИспользование двойного цикла for. Вывести на экран ascii-таблицу без управляющих символов в следующем видеТаблица 2. Символ с шестнадцатеричным кодом 0xST находится на пересечении столбца S и строки T. Для вывода на экран графических представлений управляющих символов необходимо записывать их коды напрямую в видеопамять, без использования стандартных функций типа printf (см. [1]). Машинный ноль и машинный эпсилонОператоры while. Найти машинный ноль и машинный эпсилон для вещественных типов данных: float, double, long double. Сравнить с теоретическими результатами и со справочной информацией в Help оболочки. Учесть, что в арифметических выражениях вида 1+x>1 компилятор использует повышенную точность во внутренних вычислениях. Поэтому значение 1+x необходимо запомнить во вспомогательной переменной того же типа, который имеет переменная x. Дополнительные задания1. Найдите сумму цифр целого числа типа unsigned long. Число вводится с клавиатуры. 2. Найдите вероятность счастливого шестизначного трамвайного билета. У такого билета сумма первых трех цифр равняется сумме трех последних. 3. С клавиатуры вводится число типа int. Найдите сумму битов этого числа. 4. Вывести на экран все простые числа до N включительно. Число N имеет тип unsigned int и вводится с клавиатуры. БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Керниган Б., Ритчи Д., Фьюэр А. Язык программирования Си: Задачи по языку Си. М.: Финансы и статистика, 1985. - 192с. 2. Керниган Б., Ритчи Д. Язык программирования Си. М.: Финансы и статистика, 1992. - 272с. 3. Подбельский В.В., Фомин С.С. Программирование на языке Си. Учеб. пособие. М.: Финансы и статистика, 2004. 600 с.
Страницы: 1, 2
|