Главная » Просмотр файлов » А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки

А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (1108027), страница 4

Файл №1108027 А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (А.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки) 4 страницаА.А. Белеванцев, С.С. Гайсарян, Л.С. Корухова, Е.А. Кузьменкова, В.С. Махнычев. Семинары по курсу Алгоритмы и алгоритмические языки (1108027) страница2019-04-24СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 4)

Усложнением спецификаторов можноболее точно настроить вид выводимых чисел, например, спецификатор %.5f выводитчисло типа double c пятью знаками после запятой.Функция scanf возвращает количество правильно прочитанных (согласноформатной строке) аргументов, что широко используется для проверки корректностиввода. Следующий участок кода считывает три значения типа double и печатаетсообщение, если при вводе произошла ошибка:if (scanf ("%lf%lf%lf", &x, &y, &z) != 3)printf ("Ошибка ввода: нужно ввести три вещественных числа\n");Необходимо обращать особое внимание на передачу аргументов в функцию scanfдля записи значений по указателю, а также точному соответствию типа указателя испецификатора ввода, так как в случае ошибки считанные функцией значения будутзаписаны в неверные области памяти, что приведет к ошибочной работе программы илиее краху. Для контроля использования функций форматного ввода-вывода целесообразнопри компиляции с использованием GCC включать предупреждения семейства –Wformat.143.1.

Задачи для самостоятельного решения3.1.1.* Пусть определены переменные :double d; float f; long lng; int i; short s;Что будет напечатано в результате выполнения следующего фрагментапрограммы?...а) s = i = lng = f = d = 100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);б) d = f = lng = i = s =100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);в) s = i = lng = f = d = 1000000/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);г) d = f = lng = i = s =1000000/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);д) lng = s = f = i = d =100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);е) f = s = d = lng = i = (double)100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);ж) s = i = lng = f = d = 100/(double)3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);з) f = s = d = lng = i = (double)100/3;printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);и) i = s = lng = d = f = (double)(100/3);printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);3.1.2.

Пусть определены переменные :double d = 3.2, x; int i = 2, y;Что будет напечатано в результате выполнения следующего фрагментапрограммы?а) x = ( y = d / i )  2;printf ("x = %f ;y = %d\n", x, y);б) x = ( y = d / i )  2;printf ("x = %d ;y = %f\n", x, y);в) y = ( x = d / i )  2;printf ("x = %f ;y = %d\n", x, y);г) y = d  ( x = 2.5 / d);printf ("x = %f; y = %d\n", x, y);д) x = d  ( y = ( (int)2.9 + 1.1) / d;*Задачи из задачника [5]15printf ("x = %d y = %f\n", x, y);4. ОператорыДля организации вычислений в языке Си используются операторы.

Простейшимоператором является выражение-оператор вида "expression;": например, a = b;a++; или даже 5+1; – это корректные операторы. Составной оператор {} позволяетгруппировать несколько операторов вместе. Условный оператор имеет видif (expr) stmt; else stmt;, причем нужно отметить, что ветка else всегдаотносится к ближайшему if: два приведенных участка кода эквивалентны.if (x >if (yy =elsez =2)> z)z;if (x > 2) {if (y > z) {y = z;} else {y;z = y;}}Оператор выбора switch записывается какswitch (expr){case const-expr: stmt;case const-expr: stmt;default: stmt;}и позволяет выполнить один из операторов в зависимости от значения целочисленноговыражения либо выполнить некоторый оператор по умолчанию (метка default), если ниодин из вариантов значения не предусмотрен.

Можно перечислять несколько вариантовзначений для одного оператора. После того, как одно из значений подошло, происходитпереход по соответствующей метке case и начинается выполнение тела switch соператора после этой метки. Остальные операторы switch также выполняются в порядкеих записи, поэтому для прекращения выполнения оператора выбора обязательно нужноиспользовать оператор break:switch (tag){case 2: a *= b; /* Далее выполнится a += b; из следующейветки */case 3: a += b; break; /* А здесь произойдет выход */case 4: a -= b; break;default: break;}Операторами цикла в Си являются while, for, и do .. while. Цикл whileимеет вид while (expression) stmt; и выполняет оператор stmt, покавычисление управляющего выражения expression дает ненулевое значение, при этомпервая проверка выражения производится до первого выполнения оператора.

Цикл do ..while записывается как do { stmt; } while (expression); и аналогичен циклуwhile, но проверка условия выхода из цикла делается после оператора stmt, т.е. телоцикла исполняется хотя бы один раз.Цикл for является самым мощным видом цикла в Си и записывается какfor (expr1; expr2; expr3) stmt;. Перед началом выполнения цикла16вычисляется выражение expr1, как правило, используемое для инициализации счетчиковцикла.

При этом переменную-счетчик можно объявить прямо в заголовке цикла. Телоцикла – оператор stmt – выполняется до тех пор, пока значение выражения expr2оказывается ненулевым, это выражение вычисляется перед началом каждой итерациицикла. После окончания итерации цикла вычисляется выражение expr3, обычносодержащее обновление счетчика цикла. Примером цикла for является вычисление n-йстепени числа x: for (int i = 1, pow = 1; i <= n; i++) pow *= x;.Цикл for часто используется программистами из-за выразительности и наглядности: всеуправляющие циклом конструкции сосредоточены в его заголовке, причем нетограничений на их содержание.Все три выражения из заголовка цикла for могут быть опущены, при этомзначение выражения expr2 всегда считается истинным.

Например, вечный цикл на языкеСи может быть записан как for ( ; ; ) { ... }.Для досрочного выхода из цикла, как и в случае оператора выбора, может бытьиспользован оператор break. Этот оператор прерывает лишь самый внутренний цикл изгнезда циклов. Оператор continue используется для немедленного перехода кследующей итерации цикла, пропуская оставшуюся часть тела цикла, при этом выражениеexpr3 не пропускается и выполняется до начала следующей итерации. Таким образом,при использовании continue нет необходимости дополнительно к коду заголовка циклаобновлять счетчик цикла.Задача.

С помощью цикла while напишите цикл, эквивалентный описанномуобщему виду цикла for. Что, если тело цикла содержит оператор continue?Оператор перехода по метке goto label;используется для организациисложного потока управления. В качестве метки может выступать идентификатор,областью видимости которого оказывается вся функция.

Место перехода помечается впрограмме как label:. Нужно избегать неоправданного применения оператора goto.4.1. Задачи для самостоятельного решения4.1.1. Подсчитать количество натуральных чисел n (111 <= n <= 999), в записикоторых есть две одинаковые цифры.4.1.2.. Подсчитать количество натуральных чисел n (102 <= n <= 987), вкоторых все три цифры различны.4.1.3. Подсчитать количество натуральных чисел n (11 <= n <= 999),являющихся палиндромами, и распечатать их.4.1.4.

Подсчитать количество цифр в десятичной записи целого неотрицательногочисла n.4.1.5. Определить, верно ли, что куб суммы цифр натурального числа n равен n2.4.1.6. Определить, является ли натуральное число n степенью числа 3.4.1.7. Дано натуральное число n. Получить все его натуральные делители.4.1.8. Дано натуральное число n. Получить наименьшее число вида 2r,превосходящее n.4.1.9. Распечатать первые n простых чисел.4.1.10. Распечатать первые n чисел Фибоначчи( f0 = 1; f1 = 1; fk+1 = fk-1+fk; k = 1, 2, 3,...)175.

Функции5.1. ФункцииПонятие функции. Определение, объявление, вызов функции. Передача параметров вфункцию. Понятие указателя. Задачи.5.1.1. Понятие функцииВ разделе 1 при описании простейших программ на языке Си уже былирассмотрены примеры использования функций. Рассмотрим это базовое для языка Сипонятие более подробно.

Под функцией в языках программирования подразумеваетсяспециальным образом оформленный фрагмент программы, описывающий решениенекоторой подзадачи, как правило, неоднократно выполняемой при работе программы.Использование функций при разработке программ позволяет получить более наглядный,компактный и легче понимаемый код программы, а также облегчает повторноеиспользование кода за счет использования в программах уже ранее описанных функций.Тем самым устраняется дублирование работы и ускоряется процесс разработкипрограммы.Определение функции в языке Си имеет вид:<тип> <имя> (<список формальных параметров>){<тело функции>}где <тип> задает тип возвращаемого функцией значения, <список формальныхпараметров> содержит перечисление параметров функции с обязательным указаниемтипа для каждого отдельного параметра, <тело функции> содержит объявлениелокальных переменных и операторы, реализующие алгоритм данной функции.

Еслифункция возвращает некоторое значение в качестве результата своей работы, то в телефункции обязательно должен присутствовать оператор:return <выражение>;который завершает выполнение функции и возвращает вычисленное значениевыражения в вызывающую функцию. При вычислении выражения по мере необходимостивыполняется приведение типа к объявленному типу результата.В качестве примера приведем определение функции, вычисляющей максимум двухцелых чисел:intmax (int a, int b){return (a > b) ? a : b;}Если функция не возвращает никакого значения, то в качестве типа возвращаемогозначения указывается void. Оператор return в таких функциях может отсутствовать (вэтом случае выполнение функции завершается по достижению конца тела функции, т.е.закрывающей скобки }), либо присутствовать, но не содержать никакого выражения (в18этом случае выполнение функции завершается немедленно по достижению оператораreturn).

Например:voidmax1 (int a, int b){printf ("%d\n", (a > b) ? a : b);}Если функция не имеет параметров, то в качестве списка ее параметровуказывается void. Например:intmax2 (void){int a, b;scanf ("%d %d", &a, &b); // ввод значений a и breturn (a > b) ? a : b;}Определению функции в программе может предшествовать ее объявление,заданное в виде прототипа этой функции, где указывается имя функции, типвозвращаемого ею значения и формальные параметры функции. Например:intmax (int a, int b); // прототип функции maxИмена формальных параметров в прототипе можно не указывать. Передиспользованием функции она должна быть обязательно определена или объявлена впрограмме, т.е.

Характеристики

Список файлов семинаров

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6606
Авторов
на СтудИзбе
296
Средний доход
с одного платного файла
Обучение Подробнее