Array M. УЭИТ - Язык Си - руководство для начинающих

Тут можно читать онлайн Array M. УЭИТ - Язык Си - руководство для начинающих - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Мир, год 1988. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Язык Си - руководство для начинающих
  • Автор:
  • Жанр:
  • Издательство:
    Мир
  • Год:
    1988
  • Город:
    Москва
  • ISBN:
    5-03-001309-1 /русск./
  • Рейтинг:
    3/5. Голосов: 11
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 60
    • 1
    • 2
    • 3
    • 4
    • 5

Array M. УЭИТ - Язык Си - руководство для начинающих краткое содержание

Язык Си - руководство для начинающих - описание и краткое содержание, автор Array M. УЭИТ, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru
M. УЭИТ   С. ПРАТА    Д. МАРТИН
Язык Си — руководство для начинающих

Язык Си - руководство для начинающих - читать онлайн бесплатно полную версию (весь текст целиком)

Язык Си - руководство для начинающих - читать книгу онлайн бесплатно, автор Array M. УЭИТ
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Самый легкий способ узнать, является ли число простым, состоит в делении его на все числа между 1 и им самим. Если оно делится нацело на какое-нибудь число из этого ряда, то оно - не простое. Мы воспользуемся операцией деления по модулю (%) для проверки, выполнялось ли деление нацело. (Вы не забыли еще, конечно, операцию деления по модулю? Ее результатом является остаток от деления первого операнда на второй. Если одно число делится на другое нацело, результатом операции деления помодулю будет 0.) При обнаружении какого-нибудь одного делителя числа дальнейшие проверки потеряют смысл. Поэтому в программе процесс проверки данного числа завершается после того, как найден его делитель.

Начнем с программы, проверяющей делимость одного числа. В ней имеется всего один оператор цикла.

/* простоечисло1 */

main( )

{

int number, divisor;

printf(" О каком числе вы

хотите знать, простое ли оно?\n");

scanf(" %d" , &number); /* получение ответа */

while(number <2) /* число отвергается */

{

printf(" Извините, мы не принимаем чисел меньше 2.\n");

printf(" Пожалуйста, попробуйте еще раз.\n");

scanf(" %d" , &number);

}

for(divisor = 2; number % divisor != 0; divisor++);

/* проверка, простое число или нет,

осуществляется внутри спецификации цикла */

if (divisor == number) /* выполняется после завершения цикла */

printf(" %d - простое число.\n", number);

else printf(" %d - не простое число.\n", number);

}

Мы воспользовались структурой цикла while, чтобы избежать ввода значений, которые могли бы привести к аварийному завершению программы.

Обратите внимание, что все вычисления выполняются внутри спецификации цикла for. Величина переменной numberпоследовательно делится на возрастающие значения делителей до тех пор, пока не произойдет деление нацело (т. е. number % divisorстанет равным 0). Если первым делителем, который приведет к такому результату окажется само это число, то значение переменной number- простое число. В противном случае данное число будет иметь меньший делитель, и это приведет к тому, что цикл завершится раньше.

Для нахождения всех простых чисел, меньших некоторой заданной величины, нам нужно будет заключить наш цикл forв некоторый другой цикл. На псевдокоде это будет выглядеть следующим образом:

для числа ( number)=1 до верхнего предела limitпроверять, является ли число

простым

Вторая строка представляет собой нашу предыдущую программу.

Переводя эту запись на язык Си, получим программу:

/* простыечисла2 */

main( )

{

int number, divisor, limit;

int count = 0;

printf(" Укажите, пожалуйста, верхний предел для поиска простых чисел.\n");

printf(" Верхний предел должен быть 2 или больше.\n");

scanf(" %d", &limit);

while(limit < 2) /* вторая попытка, если ошибка при вводе */

{

printf(" Вы были невнимательны! Попробуйте еще раз. \n");

scanf(" %d", &limit);}printf(" Сейчас будут печататься простые числа!\n");

for(number = 2; number <= limit; number++) /* внешний цикл*/

{

for(divisor =2; number % divisor != 0; divisor++);

if(divisor == number)

{

printf(" %5d", number);

if(++count % 10 == 0)

printf(" \n"); /* новая строка начинается

через каждые 10 простых чисел */

}

}

printf(" \n Вот и все!\n");

}

Во внешнем цикле каждое число, начиная с 2 и кончая величиной limit, последовательно берется для проверки. Указанная проверка осуществляется во внутреннем цикле. Мы использовали переменную countдля хранения счетчика получаемых простых чисел. При печати каждое одиннадцатое простое число мы начинаем с новой строки. Ниже приводится пример результатов, получаемых с помощью такой программы:

Укажите, пожалуйста, верхний предел для поиска простых чисел.

Верхний предел должен быть 2 или больше.

250

Сейчас будут печататься простые числа!

2 3 5 7 11 13 17 19 23 29

31 37 41 43 47 53 59 61 67 71

73 79 83 89 97 101 103 107 109 113

127 131 137 139 149 151 157 163 167 173

179 181 191 193 197 199 211 223 227 229 233 239 241

Вот и все!

ДРУГИЕ УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ: break, continue, goto

Операторы, определяющие циклические вычисления, которые только что обсуждались, и условные операторы ( if, if-else, switch) являются важнейшими средствами управления выполнением программы на языке Си. Они должны использоваться для реализации общей структуры программы. Три оператора, рассматриваемые ниже, обычно применяются реже, поскольку слишком частое их использование ухудшает читаемость программы, увеличивает вероятность ошибок и затрудняет ее модификацию.

break:

Важнейшим из этих трех управляющих операторов является оператор break, который уже встречался нам при изучении оператора switch. Он может использоваться в операторе switch, где часто это просто необходимо, а также в циклах любого из трех типов. Когда в ходе выполнения программы встречается указанный оператор, его выполнение приводит к выходу из конструкций switch, for, whileили do while, в которых он содержится, и переходу к следующему оператору программы. Если оператор breakнаходится внутри некоторой совокупности вложенных структур, его действие распространяется только на самую внутреннюю структуру, в которой он непосредственно содержится.

Бывает, что breakиспользуется для выхода из цикла в тех случаях, когда заданы два разных условия прекращения его работы. Ниже приводится цикл, реализующий эхо-печать символов и завершающийся при чтении либо признака EOF, либо символа "новая строка":

while((ch = getchar( ))!= EOF)

{

if(ch == '\n') break;

putchar(ch);

}

Мы сделаем логику этого фрагмента программы более понятной, если объединим обе проверки в одном выражении:

while((ch = getchar( )) != EOF && ch != '\n') putchar(ch);

Если вы обнаружите, что breakявляется частью оператора if, посмотрите, нельзя ли по-другому выразить это условие (как мы только что сделали), чтобы необходимость его использования отпала.

continue:

Этот оператор может использоваться во всех трех типах циклов, но не в операторе switch. Как и в случае оператора break, он приводит к изменению характера выполнения программы. Однако вместо завершения работы цикла наличие оператора continueвызывает пропуск "оставшейся" части итерации и переход к началу следующей. Заменим оператор breakв последнем фрагменте на continue:

while((ch = getchar( ))!==EOF)

{

if(ch == '\n')

continue;

putchar(ch);

}

В версии, использующей оператор break, работа цикла полностью прекращается, как только при вводе встречается символ "новая строка". В версии с оператором continueпросто пропускаются символы "новая строка", а выход из цикла происходит, только когда читается признак EOF.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Array M. УЭИТ читать все книги автора по порядку

Array M. УЭИТ - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Язык Си - руководство для начинающих отзывы


Отзывы читателей о книге Язык Си - руководство для начинающих, автор: Array M. УЭИТ. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x