- •1.Учебно-методический комплекс дисциплины
- •Данные о преподавателе:
- •1.2 Данные о дисциплине:
- •Выписка из учебного плана
- •1.3 Пререквизиты
- •1.4 Постреквизиты
- •1.5 Цели и задачи дисциплины
- •1.6 Перечень и виды заданий и график их выполнения
- •Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •1.8 Контроль и оценка знаний.
- •1.9 Политика и процедура курса
- •2 Содержание Активного раздаточного материала
- •2,1 Тематический план курса
- •2.2 Конспект лекционных занятий
- •#Define millenium 1000
- •// Нельзя изменять
- •/* Это моя первая программа на Си*/
- •Void main()
- •Void main ()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main(void)
- •If (логическое выражение) оператор 1;
- •Void main()
- •If (логическое выражение)
- •If (условие 1 )
- •If (условие 1 )
- •If (X) printf ("Число не равно нулю");
- •Void main()
- •Void main(void)
- •Void main()
- •Void main()
- •Int n; // Количество узлов интерполяции
- •Int k; // Номер узла
- •Void main()
- •Vvedi 5 7
- •Int *a; // Указатель на массив целых чисел
- •Void main()
- •Int vect[10], s1[50];
- •Int vect [n];
- •Void main( )
- •Int min; // номер минимального элемента
- •Int random ( int n )
- •Void lin(char a)
- •Void z1(int * X, int * y)
- •Void z1(int*, int*);
- •Int имя переменной;
- •Void main()
- •8 Есть цифра
- •8 Есть буква или цифра
- •Int integ;
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Int ocen;
- •Void main( )
- •File *указатель на файл;
- •Fclose(имя_указателя);
- •Void main()
- •Int h; /*дескриптор создаваемого файла*/
- •Void main()
- •Initgraph(&g_driver,&g_mode," ");
- •Vgamed 1 640x350
- •Vgahi 2 640x480
- •Initwindow ( 400, 300 ); // открыть окно для графики 400 на 300
- •Void main(void)
- •Int g_driver,g_mode,g_error;
- •2.3 Планы лабораторных занятий
- •Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп).
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс).
- •2.6 Тестовые задания для самоконтроля с указанием ключей
- •Глоссарий
2.3 Планы лабораторных занятий
Каждая лабораторная работа включает в себя два задания А и В, отличающиеся по уровню сложности. При выборе первого задания студент при защите может получить максимальный балл равный 80%, при выборе второго задания – 95%. При выполнении двух заданий добавляется 5-10%.
Лабораторные работы должны быть оформлены по следующему плану:
- № лабораторной работы, тема (титульный лист);.
- условие задачи;
- блок-схема;
- листинг программы;
- тестирование;
- краткие ответы на все вопросы.
Лабораторная работа №1. Линейный вычислительный процесс
Цель работы.Изучить правила составления текстов программ на языке С: базовые типы данных, ввод-вывод данных, основные арифметические и тригонометрические функции; отладить и вычислить значение по математическому выражению.
Пример
Вычислить , при x=2.444, y=0.0869, z=-130.0, должно быть получено: -0.49871.
Текст программы может иметь следующий вид:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define x 2.444
#define y 0.00869
#define z -130.0
void main(void)
{
double rezult,dop,a,b,c;
clrscr( ); /* ОЧИСТКА ЭКРАНА */
puts(" ЛАБОРАТОРНАЯ РАБОТА N1 - ЛИНЕЙНАЯ ПРОГРАММА ");
puts("============================================");
dop=fabs(y-x);
a=pow(x,y+1)+exp(y-1);
b=1+x*fabs(y-tan(z));
c=0.5*pow(dop,2)-pow(dop,3)/3;
rezult=a/b*(1+dop)+c;
printf("\a\n ОТВЕТ: rezult=%lf, Press any key...", rezult);
getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ ЛЮБОЙ КЛАВИШИ */
}
Варианты задания А
Составить программу вычисления выражения в правой части. Все значения для вычисления ввести с клавиатуры.
1.
Y=
2.
Y=
3.
Y=
4.
Y=
5.
Y=
6.
Y=
7.
Y=
8.
Y=
9.
Y=
10.
Y=
)
11.
Y=
12.
Y=
13.
Y=
14.
Y=
15.
Y=
Варианты задания Б
Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры.
1. Даны два ненулевых числа. Найти их сумму, разность, произведение и частное.
2. Даны два числа. Найти среднее арифметическое их квадратов и среднее арифметическое их модулей.
3. Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U < V). Время движения лодки по озеру T1 ч, а по реке (против течения) — T2 ч. Определить путь S, пройденный лодкой.
4. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга.
5. Скорость первого автомобиля V1 км/ч, второго — V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили первоначально движутся навстречу друг другу.
6. Найти периметр и площадь прямоугольного треугольника, если даны длины его катетов a и b.
7. Дана длина ребра куба. Найти площадь грани, площадь полной поверхности и объем этого куба.
8. Найти длину окружности и площадь круга заданного радиуса R. В качестве значения Pi использовать 3.14.
9. Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2). В качестве значения Pi использовать 3.14.
10. Дана сторона равностороннего треугольника. Найти площадь этого треугольника и радиусы вписанной и описанной окружностей.
11. Дана длина окружности. Найти площадь круга, ограниченного этой окружностью. В качестве значения Pi использовать 3.14.
12. Дана площадь круга. Найти длину окружности, ограничивающей этот круг. В качестве значения Pi использовать 3.14.
13. Найти периметр и площадь равнобедренной трапеции с основаниями a и b (a > b) и углом alpha при большем основании (угол дан в радианах).
14. Найти периметр и площадь прямоугольной трапеции с основаниями a и b (a > b) и острым углом alpha (угол дан в радианах).
15. Найти расстояние между двумя точками с заданными координатами (x1, y1) и (x2, y2).
Основная литература 5[4-13]
Контрольные вопросы:
Структура простейшей программы на Си.
Напишите формат и пример операции форматированного вывода на
экран.
Напишите формат и пример операции форматированного ввода с клавиатуры.
Перечислите управляющие символы, используемые в форматной строке.
Перечислите спецификаторы формата, используемые в форматной
строке.
Лабораторная работа №2.Разветвляющиеся процессы
Цель работы. Изучить оператор безусловного перехода и операторы разветвлений: оператор выбора по условию if, оператор-переключатель switch.
Пример (использование оператора if)
Даны два числа: a и b, не равные нулю!
Вычислить
:
Тестовый
пример: a=10; b=5;
Вариант текста С-программы:
#include <stdio.h>
#include <conio.h>
void main( )
/* Пример условного оператора if */
{
float a,b,c;
puts(“\n введите а и b:“);
scanf(“%f%f”, &a, &b);
if (a>=b) c=a/b;
else c=b/a;
printf(“\n c=%f”, c);
getch();
}
Варианты задания А
Составить программу вычисления с применением условного оператора. Все данные в правых частях формул выбрать самостоятельно и ввести с клавиатуры.
Варианты задания Б
Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры
1. Напишите программу-модель анализа пожарного датчика в помещении, которая выводит сообщение «Пожарная ситуация», если температура (ее значение вводится с клавиатуры) в комнате превысила 60ºС.
2. Ракета запускается с точки на экваторе и развивает скорость v км/с. Каков результат запуска? Замечание: если v<=7.8 км/с, то ракета упадет на Землю, если 7.8<v<11.2, то ракета станет спутником Земли, если 11.2v16.4, то ракета станет спутником Солнца, если v>16.4, то ракета покинет Солнечную Систему
3. Рис расфасован в два пакета. Вес первого - m кг, второго – n кг. Составьте программу, определяющую: а) какой пакет тяжелее – первый или второй? б) вес более тяжелого пакета
4. Написать программу, которая бы запрашивала возраст мужчины и сообщала, сколько лет ему осталось до пенсии, либо что он уже пенсионер.
5. Туристы вышли из леса на шоссе неподалеку от километрового столба с отметкой А км и решили пойти на ближайшую автобусную остановку. Посмотрев на план местности, руководитель группы сказал, что автобусные остановки расположены на километре В и на километре С. Куда следует пойти туристам?
6. Написать программу, которая бы запрашивала целое число и распечатывала любое его значение, кроме13. Если заданное число равно13, вместо него печатается число 77.
7. Валя и Вера на своем садовом участке собрали А кг клубники. Из них В кг собрала Вера. Кто из девочек собрал клубники больше и на сколько?
8. Даны длины трех отрезков a, b, c. Если можно построить треугольник по этим трем отрезкам, то вычислить его периметр и площадь.
9. Первая бригада маляров за t1 час покрасила А м2 стен, а вторая бригада за t2 часа покрасила В м2. У какой бригады производительность труда выше и на сколько?
10. Каждое утро майор Знаменский заходит в тир и делает 5 выстрелов через плечо. Если он набирает 50 очков, то вечером идет с Зиночкой в ресторан, а если меньше, то на тренировку в тир. Написать программу, которая распечатывает планы майора на вечер.
11. Турист за день прошел А км. До обеда он шел t часов и прошел 20 км. Еще t2 часа он шел после обеда. Когда скорость туриста была выше: до обеда или после обеда?
12. Составьте программу, которая по трем введенным вами числам определит, могут ли эти числа быть длинами сторон треугольника, и если да, то определить вид этого треугольника (остроугольный, прямоугольный или тупоугольный).
13. Валя и Вера собрались варить варенье из А кг смородины. По рецепту на 2 кг ягод нужно 3 кг сахара. Валя сказала, что им потребуется С кг сахара, а Вера - что Р кг. Кто из них прав?
14. Для конкурсного отбора манекеншиц приглашаются девушки не ниже 180 см. Оределить, будет ли допущена Таня к участию в конкурсе.
15. Смекалкин, уходя в школу, вышел из дому на 3 минуты позже младшего брата. Расстояние до школы S метров. Смекалкин идет со скоростью V1 м/мин, а его брат – V2 м/мин. Догонит ли Смекалкин брата, прежде, чем тот придет в школу?
Основная литература 5[13-19]
Контрольные вопросы:
Какие формы записи операторов if применяются в языке С ?
Чем отличается оператор if от оператора switch?
Перечислите дополнительные операции присваивания.
4. Напишите формат и пример условного оператора в полной форме.
5. Напишите формат и пример условного оператора в краткой форме.
Лабораторная работа №3.Циклические процессы
Цель работы.Изучить циклические операторы for, while, do – while, научиться составлять и программировать циклические алгоритмы.
Пример цикла for
Вычислить
;
на печать программа должна выводить
промежуточные и окончательный результаты.
Текст программы может иметь вид:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define n 10 // задали число слагаемых
void main(void)
{
float s; int k;
clrscr( ); // ОЧИСТКА ЭКРАНА
puts("\n ЛАБОРАТОРНАЯ РАБОТА N3 - ОПЕРАТОРЫ ЦИКЛА ");
puts("\n ============================================ \n");
s=0;
for (k=1; k<=n; k++)
{
s=s+1.0/k;
printf(" \t\n k=%d s=%f 1.0/k=%f", k, s, 1.0/k);
}
puts("\n");
printf("\a\n ОТВЕТ: s=%f, Press any key...",s);
getch( ); /* ЗАДЕРЖКА ДО НАЖАТИЯ КЛАВИШИ ENTER */
}
Варианты задания А
Составить программу вычисления таблицы значений суммы S(x) и функции в произвольном диапазоне [a,b] изменения аргумента x с произвольным шагом h. Значения a,b,h и n вводятся с клавиатуры. Функция Y(x) разложена в ряд S(x). Значения S и Y для данного аргумента x должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
1.
2.
3.
4.
5.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Варианты задания Б
Составить программу решения задачи. Все значения для вычисления ввести с клавиатуры.
1. Сколько можно купить быков, коров, телят, платя за быка 10 рублей, за корову 5 рублей, а за теленка 0,5 рублей, если на 100 рублей надо купить 100 голов скота. [Ответ: коров-9, бык-1,телят-90]
2. В компьютер вводятся по очереди координаты N точек. Определить, сколько из них попадет в круг радиусом R с центром в точке (а,в).
3. У гусей и кроликов вместе 24 лапы. Сколько может быть кроликов и гусей (указать все сочетания)
4. В компьютер вводятся по очереди данные о росте N учащихся группы. Определить средний рост учащихся группы
5. Одноклеточная амеба каждые три часа делится на 2 клетки. Определить, сколько амеб будет через 3,6,9,12,…,24 часа. [Ответ: 256]
6. Составьте программу вычисления степени числа А с натуральным показателем N . (Записать варианты программы с 3 видами циклов: for, while, do…while)
7. Написать программу, которая вводит и суммирует любое количество целочисленных значений. Если введено число 999, то на экран выводится результат суммирования.
8. С помощью оператора WHILE написать программу, которая ищет произведение 10 произвольно введенных чисел и выводит его на печать.
9. Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней?
10. С помощью оператора WHILE напишите программу вывода всех четных чисел в диапазоне от 22 до 100 включительно.
11. Составить программу для вычисления значений функции F(x) на отрезке [a,b] с шагом h. Результат представить в виде таблицы, первый столбец которой- значения аргумента, второй- соотв. значение функции. F(x)=cosx+ctgx
12. С помощью оператора WHILE напишите программу, вычисляющую сумму квадратов чисел от 1 до введенного вами целого числа.
13. Напишите программу определения суммы всех нечетных чисел, кратных 3 в диапазоне от 1 до 99 включительно.
14. Составить программу поиска четырехзначных чисел, которые при делении на 133 дают в остатке 125, а при делении на 134 дают в остатке 111.
15. С помощью оператора цикла с постусловием напишите программу-фильтр, которая вводит любые символы, но комментирует только буквы русского алфавита. Завершение работы - по нажатию буквы ‘Я’.
Основная литература 5[13-19]
Контрольные вопросы:
Какой процесс называется ”циклическим” ?
Чем отличаются операторы while и do……while?
Поясните понятие “Вложенный цикл”.
Оператор цикла с постусловием выполняется до тех пор, пока
заключенное в нем выражение …………………(истина или ложь?)
Какого типа может быть шаг изменения параметра цикла for? цикла
while?
Лабораторная работа №4. Обработка массивов
Цель работы: приобретение навыков программирования при решении задач с использованием структур данных типа массив.
Пример работы с одномерным массивом
В массиве а целого типа найти индекс и значение максимального элемента и переставить его с первым элементом. Программа также должна подсчитать количество положительных и отрицательных элементов данного мaссива.
Текст программы может быть следующим:
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
void main(void)
{
int a[4]={-1,-20,4,100};
// обьявление массива a и присвоение значений
// индексы массива принимают значения от 0 до 3
int i,index,zam,max,kp,ko;
clrscr();
puts(" ... ИСХОДНЫЙ МАССИВ ......\n");
for (i=0; i<=3; i++)
printf("%d ",a[i]);
/* вывод элементов исходного массива */
puts("\n");
max=a[0]; kp=0; ko=0;
for (i=1; i<=3; i++)
{
if (a[i]>max)
{
max=a[i]; index=i;
}
}
zam=a[0]; a[0]=max; a[index]=zam;
for (i=0;i<=3;i++)
{
if (a[i]<0) ko=ko+1;
else kp=kp+1;
}
puts(" ... РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ......\n");
for (i=0; i<=3; i++)
printf("%d ",a[i]);/* вывод элементов массива */
puts("\n");
printf("\n положительных элементов массива: %d \n",kp);
printf(" \n отрицательных элементов массива: %d,\
\n\n Press any key...",ko);
getch();
}
Варианты задания А
Одномерные массивы
1. Дан массив размера N. Вывести его элементы в обратном порядке.
2. Дан массив размера N. Вывести вначале его элементы с четными1|нечетными2 индексами, а затем — с нечетными1|четными2.
3. Дан целочисленный массив A размера 10. Вывести номер первого1|последнего2 из тех его элементов A[i], которые удовлетворяют двойному неравенству: A[1] < A[i] < A[10]. Если таких элементов нет, то вывести 0.
4. Дан целочисленный массив размера N. Преобразовать его, прибавив к четным1|нечетным2 числам первый3|последний4 элемент. Первый и последний элементы массива не изменять.
5. Дан целочисленный массив размера N. Вывести вначале все его четные1|нечетные2 элементы, а затем — нечетные1|четные2.
6. Поменять местами минимальный и максимальный элементы массива размера 10.
7. Заменить все положительные1|отрицательные2 элементы целочисленного массива размера 10 на значение минимального3|максимального4.
8. Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами.
9. Дан массив размера N. Осуществить циклический сдвиг элементов массива влево1|вправо2 на одну позицию.
10. Дан массив размера N и число k (0 < k < 5, k < N). Осуществить циклический сдвиг элементов массива влево1|вправо2 на k позиций.
11. Проверить, образуют ли элементы целочисленного массива размера N арифметическую1|геометрическую2 прогрессию. Если да, то вывести разность1|знаменатель2 прогрессии, если нет — вывести 0.
12. Дан массив ненулевых целых чисел размера N. Проверить, чередуются ли в нем [четные и нечетные]1|[положительные и отрицательные]2 числа. Если чередуются, то вывести 0, если нет, то вывести номер первого элемента, нарушающего закономерность.
13. Дан массив размера N. Найти количество его локальных минимумов1|максимумов2.
14. Дан массив размера N. Найти максимальный1|минимальный2 из его локальных минимумов1|максимумов2.
15. Дан массив размера N. Определить количество участков, на которых его элементы монотонно возрастают1|убывают2.
Варианты задания В
Двумерные массивы (матрицы)
1. Дано число k (0 < k < 11) и матрица размера 4 x 10. Найти сумму и произведение элементов k-го столбца данной матрицы.
2. Дана матрица размера 5 x 9. Найти суммы элементов всех ее четных1|нечетных2 строк3|столбцов4.
3. Получить целочисленную квадратную матрицу порядка 7, элементами которой являются числа 1, 2, ….., 49, расположенные в ней по спирали:
1
2 ….
4. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n x n:
а) б)
5. Дана действительная квадратная матрица порядка n. Найти наименьшее из значений элементов, расположенных в заштрихованной части матрицы.
5. Дана матрица размера 5 x 10. Преобразовать матрицу, поменяв местами минимальный и максимальный элемент в каждой строке1|столбце2.
6. Дана матрица размера 5 x 10. Найти минимальное1|максимальное2 значение среди сумм элементов всех ее строк3|столбцов4 и номер строки3|столбца4 с этим минимальным1|максимальным2 значением.
7. Дана матрица размера 5 x 10. Найти минимальный1|максимальный2 среди максимальных1|минимальных2 элементов каждой строки3|столбца4.
8. Дана целочисленная матрица размера 5 x 10. Вывести номер ее oepbni1|последней2 строки3|столбца4, содержащего равное количество положительных и отрицательных элементов (нулевые элементы не учитываются). Если таких строк3|столбцов4 нет, то вывести 0.
9. Дана матрица размера 5 x 10. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего только положительные элементы. Если таких строк3|столбцов4 нет, то вывести 0.
10. Дана целочисленная матрица размера M x N. Различные строки (столбцы) матрицы назовем похожими, если совпадают множества чисел, встречающихся в этих строках (столбцах). Найти количество строк1|столбцов2, похожих на первую3|последнюю4 строку1|столбец2.
11. Дана целочисленная матрица размера M x N. Найти количество ее строк1|столбцов2, все элементы которых различны.
12. Дана целочисленная матрица размера M x N. Вывести номер ее первой1|последней2 строки3|столбца4, содержащего максимальное количество одинаковых элементов.
13. Дана квадратная матрица порядка M. Найти сумму элементов ее главной1|побочной2 диагонали.
14. Дана квадратная матрица порядка M. Найти суммы элементов ее диагоналей, параллельных главной1|побочной2 (начиная с одноэлементной диагонали A[1,M]1|A[1,1]2).
15. Дана квадратная матрица порядка M. Вывести минимальные1|максимальные2 из элементов каждой ее диагонали, параллельной главной3|побочной4 (начиная с одноэлементной диагонали A[1,M]3|A[1,1]4). Matrix16. Дана квадратная матрица порядка M. Заменить нулями элементы матрицы, лежащие ниже1|выше2 главной3|побочной4 диагонали.
Основная литература 5[19-24]
Контрольные вопросы:
Заполните массив float x[15] [15] случайными числами из диапазона
0..1;
Опишите массив А, содержащий 10 элементов целого типа.
В каком случае размерность массива можно явно не указывать.
Пусть объявлен массив Int m[6]={5, 3, 2}; Чему равен элемент m[4]?
Чему равно нижнее значение индекса?
Лабораторная работа №5 Функции пользователя
Цель работы. Познакомиться с механизмом составления и организации взаимодействия пользовательских функций языка С.
Пример работы с функциями
Следующая программа запрашивает элементы целочисленного массива размером 3Х3 и передает сформированный массив в пользовательскую функцию, которая подсчитывает сумму его положительных значений.
#include <stdio.h>
#include <conio.h>
void summa(int a1[ ][3]);
void main(void)
{
int a[3][3];
int i,j;
clrscr();
printf("\n Введите девять целых чисел \n");
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
printf("\n a[%d][%d]=", i, j);
scanf("%d", &a[i][j]);
}
summa(a);
}
void summa(int a1[ ][3])
{
int i,j,s;
puts(" ФУНКЦИЯ summa ");
puts("----------------------------------");
/* ВЫЧИСЛЕНИЕ СУММЫ ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ МАССИВА */
s=0;
for (i=0; i<3; i++)
{
printf("\n");
for (j=0;j<3;j++)
{
if (a1[i][j]>0)
{
s=s+a1[i][j];
}
}
}
printf("\a СУММА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ\
МАТРИЦЫ =%d, Press any key... ",s);
getch();
}
Варианты задания А
1. Даны три натуральных числа. Определить их наибольший делитель (определение HOD – см. N 10).
2.
Даны отрезки a,b,c,d. Для каждой тройки
этих отрезков, из которых можно построить
треугольник, вычислить площади
треугольников. Площадь треугольника
,
где
.
3.
Дано натуральное число N. Определить,
если это возможно, пару x,y таких натуральных
чисел, что
.
4.
Дано натуральное число N. Определить
все пары x,y натуральных чисел, таких,
что
,
.
5.
Даны действительные числа x,y (x>0, y>1).
Получить целое число K (положительное,
отрицательное или равное нулю),
удовлетворяющее условию
<
.
6. Дано натуральное число N (N > 99). Определить число сотен в нем.
7.
Дано натуральное число N (N
99).Выяснить, верно ли, что N2
равно кубу
суммы цифр числа N.
8. Дано натуральное число N (N > 10000). Определить сумму цифр первых K разрядов числа N (K 4).
9. Даны натуральные числа n,m. Получить произведение m последних цифр числа n.
10. Даны натуральные числа n,m. Найти наибольший общий делитель n и m (наименьшее общее кратное n и m), используя алгоритм Евклида.
Пусть
n и m – одновременно не равные нулю целые
неотрицательные числа и пусть m
n. Тогда, если n = 0, то NOD (n,m) = m, и если n ≠
0, то для чисел m, n, r, где r остаток от
деления m на n, выполняется равенство
NOD (m,n) = NOD (n,r). Например, NOD (15,6) = =NOD (6,3) =
NOD (3,0) = 3.
11.
Даны натуральные числа a,b,c,d. Вычислить
f(a)·f(b)+f(c)
f(d),
где
12. Дано натуральное число N. Удалить из записи числа N цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться число 919.
13. Дано натуральное число N. Получить все такие натуральные K, что N делится на K2 и не делится на K3.
14. Даны натуральные целые числа n и m, вычислить A(n,m), где
15. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу (как, например, 153=13+53+33 ). Получить все числа Армстронга, состоящие из двух, трех и четырех цифр.
Варианты задания В
1. Имеется n населенных пунктов, перенумерованных от 1 до n (n=10). Некоторые пары пунктов соединены дорогами. Определить, можно ли попасть по этим дорогам из первого пункта в n-й пункт. Информация о дорогах задается в виде последовательности пар чисел i и j ( i<j ) указывающих, что i-й и ј-й населенный пункт пункты соединены дорогой. Признак окончания этой последовательности – пара нулей.
2. Напечатать все цифры числа 2500 и числа 1!+2!+…+100!
3. Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь.
4. Три прямые на плоскости заданы уравнением akx+bky=ck (k=1,2,3). Если эти прямые попарно пересекаются и образуют треугольник, тогда найти его площадь.
5. Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, числа 41 и 43). Напечатать все пары «близнецов» на отрезке [n,2n], где n – заданное целое число, больше 2.
6. Ввести целое натуральное число N. Сформировать треугольник Паскаля по алгоритму:
C00
C10 C11
C20 C21 C22
C30 C31 C32 C33
C40 C41 C42 C43 C44
………………………..
Здесь
, где n!=1·2·3·….·n – факториал числа n.
7. «Ханойская башня». Имеются три колышка A,B и C и n дисков разного размера, перенумерованных от 1 до n в порядке возрастания их размеров. Сначала все диски надеты на колышек A так, как показано на рис.1,а. Требуется перенести все диски с колышка A на колышек С (рис.1,в), соблюдая при этом следующие условия:диски можно переносить только по одному, больший диск нельзя ставить на меньший.
8. Написать функцию, обеспечивающую решение квадратного уравнения. Примерами функции должны быть коэффициенты и корни уравнения. Значение, возвращаемое функцией, должно пере давать в вызывающую программу информацию о наличии у уравнения корней : 2- два разных корня, 1 – корни одинаковые, 0 – уравнение не имеет решения. Кроме того, функция должна проверять корректность исходных данных. Если исходные данные неверные, то функция должна возвращать –1.
9. «Задача о 8 ферзях». На шахматной доске расставить 8 ферзей так, чтобы они не «били» друг друга (всего существует 92 расстановки).
10.«Метод фон Неймана». Дано n вещественных чисел. Упорядочить их по неубыванию:образовать два массива А и В и записать исходные числа в А; упорядочить пары соседних чисел (А1 и А2, А3 и А4 и т.д.) и записать их в В; взять из В по две соседние упорядоченные пары и, слив их в упорядоченные четверки, снова записать в А; затем каждые две соседние четверки из В слить в упорядоченные восьмерки и перенести в А и т.д.
11. Даны два массива чисел X и Y размером 100 элементов. Составить программу, меняющую последовательно местами значения элементов xk и yk, не используя промежуточных величин.
12. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально возможное количество чисел, так чтобы оставшиеся числа шли в порядке возрастания.
13. Имеется 9 карточек, на которых написаны цифры 1,2,3,4,5,6,7,8,9 (по одной цифре на каждой карточке). Из этих карточек составляются два числа. Первое число – это числитель дроби, а второе число – это знаменатель дроби. Каждая карточка должна быть обязательно использована. Знаменатель дроби состоит из пяти цифр. Например, числитель – 6729, знаменатель – 13458 (все карточки использованы). Дробь 6729/13458 в точности равна ½.
14. Ввести два натуральных числа N и M. Найти такую комбинацию карточек (если она существует), которая образовала бы дробь, равную в точности N/M. Если комбинация не единственная, то вывести их все.
Основная литература 5[24-29]
Контрольные вопросы:
Чем функция пользователя отличается от стандартной функции ?
Способы передачи аргументов в функцию.
Поясните понятие “локальные” и “глобальные” переменные.
Для чего и каким образом применяется оператор return ?
Лабораторная работа №6. Строки
Цель работы. Изучить особенности работы со строковыми объектами (одномерными символьными массивами и строками-константами) языка
Пример работы со строковыми данными
В следующей программе значение строки формируется с клавиатуры, а затем введенная строка распечатывается в обратном порядке.
#include <stdio.h>
#include <string.h>
#include <conio.h>
void main(void)
{
char s[100]; // обьявление символьного массива
int i, k;
clrscr();
puts(" Введите исходную строку");
gets(s);
k=strlen(s);
puts(" ... РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ ......\n");
for (i=k; i>=0; i--)
printf("%c",s[i]);
/* вывод элементов массива в обратном порядке */
printf("\n Press any key...");
getch();
}
Варианты задания А
1. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 2, то удаляются все числа, которые делятся на 2.
2. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L четная, то удаляются 2 первых и 2 последних символа.
3. Выяснить, имеются ли среди символов S1...Sn некоторой строки все буквы, входящие в слово DOS.
4. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L нечетная, то удаляется символ, стоящий посередине строки.
5. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов каждого второго символа ! на $.
6. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Составить программу для замены в строке длиной К символов всех пробелов на символ $.
7. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L>10, то удаляются все цифры.
8. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 3, то удаляются все числа, делящиеся на 3.
9. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 5, то подсчитывается количество скобок всех видов.
10. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L кратна 4, то первая часть строки меняется местами со второй.
11. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина L=10, то удаляются все A...Z.
12. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина
L >15, то удаляются все a…z.
13. В строке символов поменять местами символы на четных и нечетных позициях.
14. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L, и, если длина
L >6, то выделяется подстрока в { } скобках.
15. Ввести с клавиатуры строку символов. Признак окончания ввода строки – нажатие клавиши "Ввод". Программа должна определить длину введенной строки L и, если длина
Варианты задания В
В программах предусмотреть ввод исходной информации о четырех студентах:
фамилия и инициалы;
год рождения;
год поступления в БГУИР;
оценки за первый семестр: физика, высшая математика, информатика.
1. Распечатать список студентов, упорядоченный по алфавиту.
2. Распечатать список студентов, упорядоченный по году рождения.
3. Распечатать список студентов-отличников, упорядоченный по году поступления.
4. Распечатать анкетные данные студентов, сдавших сессию на 4 и 5.
5. Распечатать список студентов, фамилии которых начинаются с буквы Б, и их оценки по всем предметам.
6. Распечатать анкетные данные отличников.
7. Распечатать список студентов, фамилии которых начинаются с буквы А, и их даты рождения.
8. Распечатать анкетные данные студентов, имеющих оценку 3 в сессию.
9. Распечатать список студентов и их оценки. Фамилии студентов начинаются с букв В и Г.
10. Распечатать фамилии и даты рождения студентов, не имеющих оценок 3.
11. Вычислить общий средний балл всех студентов и распечатать список студентов со средними баллами выше общего среднего балла.
12. Вычислить общий средний балл всех студентов и распечатать список студентов, имеющих средний балл ,равный общему среднему баллу.
13. Распечатать анкетные данные студентов, имеющих оценку 2.
14. Распечатать анкетные данные студентов, имеющих оценку 5 по информатике.
15. Распечатать анкетные данные студентов, имеющих оценку 4 по физике и оценку 5 по высшей математике.
L >5, то выделяется подстрока до первого пробела.
Основная литература 5[37-43]
Контрольные вопросы
Как описываются строки в языке С?
Чем отличаются функции scanf() и gets(), printf() и puts()?
Как объединить две строки?
Как подсчитать колтчество символов в строке?
