Программирование на языке Си. Практикум
.pdf
Министерство транспорта Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «РОССИЙСКИЙ УНИВЕРСИТЕТ ТРАНСПОРТА»
Институт пути, строительства и сооружений
Кафедра “Системы автоматизированного проектирования”
М.А. ГУРКОВА, Э.Р. РЕЗНИКОВА
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ СИ
Практикум
для студентов направления 09.03.01 «Информатика и вычислительная техника»
(«Системы автоматизированного проектирования»)
Москва – 2020
УДК 004
Г 95
Гуркова М.А., Резникова Э.Р. Программирование на языке Си: Практикум. – М.: РУТ(МИИТ), 2020. – 70 с.
Настоящий практикум содержит задания к лабораторным работам по курсам «Программирование» и «Языки программирования высокого уровня». Приведены варианты заданий по обработке массивов, указателей, символьных данных и структур, по созданию и использованию функций и текстовых файлов. Дополнительно приведены необходимые пояснения и примеры.
Практикум предназначен для студентов направления 09.03.01 Информатика и вычислительная техника, профиль - Системы автоматизированного проектирования.
© РУТ (МИИТ), 2020
Содержание |
|
Введение ..................................................................................................... |
4 |
1. Массивы.................................................................................................. |
4 |
Работа №1. Обработка одномерного массива....................................... |
5 |
Работа №2. Обработка двух одномерных массивов.......................... |
10 |
Работа №3. Заполнение регулярного массива. |
|
Индексированные переменные............................................................. |
18 |
Работа №4. Вычисление матричных выражений............................... |
22 |
Работа №5. Заполнение регулярного массива. |
|
Динамический массив ............................................................................ |
31 |
Работа №6. Вычисление матричных выражений............................... |
31 |
2. Функции................................................................................................ |
32 |
Работа №7. Применение функций при решении простых |
|
вычислительных задач ........................................................................... |
34 |
Работа №8. Создание функций для численного интегрирования. .. |
37 |
Работа №9. Создание функций по обработке массивов.................... |
41 |
Работа № 10. Функции, выполняющие матричные операции ......... |
49 |
Работа № 11. Использование указателей на функции....................... |
50 |
3. Символьные данные (строки) ........................................................... |
51 |
Работа № 12. Символьные и строковые данные ................................ |
54 |
4. Файлы. Работа с файлами .................................................................. |
56 |
Работа № 13. Ввод и вывод в текстовые файлы................................. |
59 |
5. Структурный тип данных .................................................................. |
59 |
Работа № 14. Работа с массивами структур ........................................ |
62 |
Список литературы ................................................................................. |
69 |
3
Введение
Язык программирования Си был разработан в 1972 году Денисом Ритчи, одним из авторов операционной системы UNIX, и с тех пор остается одним из самых востребованных. Лучший способ научиться программировать – выполнять как можно больше практических заданий. В данном практикуме представлены задания для лабораторных работ по обработке массивов, указателей, символьных данных и структур, по созданию и использованию функций и текстовых файлов. При выполнении заданий можно использовать приведенные пояснения и примеры.
1. Массивы
Массив – это некоторый объект программы, имеющий имя и представляющий собой группу элементов одного типа. Число элементов массива задается при его объявлении одним или несколькими числами, записанными в квадратных скобках. Массивы служат для упрощения работы с большими наборами однотипных данных. В зависимости от способа представления данных могут быть использованы одномерные, двумерные (или большей размерности) массивы. Доступ к отдельному элементу массива осуществляется либо по его номеру (с помощью индексированной переменной), либо по адресу (отсчет ведется от начала массива).
Массив, как любой объект программы, должен быть объявлен, определен (т.е. проинициализирован), и только после этого его можно использовать.
1.1. Одномерные массивы
Одномерный массив - один ряд элементов. Формат объявления одномерного массива:
тип_данных имя_массива [размер_ массива];
Например:
int ma[6]; // Массив ma состоит из 6 элементов целого типа float X[30]; // Массив X из 30 элементов вещественного типа
Массив располагается в памяти элемент за элементом. ma[6]
4
Инициализация массива при объявлении - значения элементов задаются в фигурных скобках через запятую. Например,
int ma[6] = {2, -1, 3, 0, 11, 8};
Также можно инициализировать массив путем обращения к каждому элементу, используя оператор присваивания либо вводя значение с клавиатуры, из входного потока, из файла и т.д.
Обращаясь к элементу массива, необходимо указать имя массива и в скобках индекс (порядковый номер) данного элемента. Например, ma[i], где ma - имя массива, i - индекс (номер) элемента. Индекс первого элемента 0, а последнего – на единицу меньше количества элементов в массиве.
|
|
… |
|
… |
|
ma[0] ma[1] |
|
ma[i] |
|
ma[n-1] |
|
Для обработки всех элементов надо использовать циклы по номерам (индексам), т.к. операции с каждым элементом массива можно записать одинаково. Например, цикл для инициализации массива по формуле:
for (i=0; i<30; i++) X[i] = a + i*dх;
Лабораторная работа №1 Обработка одномерного массива
Задание: Написать программу создания и обработки элементов одномерного массива, в которой:
№ |
Вариант задания |
1• объявить массив Z из 8 целых чисел;
•значения элементов массива ввести с клавиатуры;
•подсчитать и вывести на экран количество нечётных элементов массива и их сумму;
•напечатать весь массив в строчку.
5
2• объявить массив W из 7 целых чисел;
•значения элементов массива ввести с клавиатуры;
•все отрицательные элементы увеличить в 3 раза;
•подсчитать и вывести на экран среднее арифметическое элементов массива;
•напечатать весь массив (после изменения) в столбик.
3• объявить массив N из 11 целых чисел;
•значения элементов массива ввести с клавиатуры;
•разделить на 2 все чётные элементы массива;
•найти сумму всех элементов измененного массива;
•напечатать массив в столбик.
4• объявить массив P из 9 целых чисел;
•значения элементов массива ввести с клавиатуры;
•подсчитать и вывести на экран количество положительных элементов массива и их сумму;
•напечатать весь массив на листе в столбик.
5• объявить массив F из 5 целых чисел;
•значения элементов массива ввести с клавиатуры;
•подсчитать и вывести на экран количество положительных элементов массива и их среднее арифметическое;
•напечатать весь массив в столбик.
6• объявить массив Z из 17 целых чисел;
•значения элементов массива вычислить по формуле
Z[i]=150 - 2∙ 2;
•подсчитать и вывести на экран сумму первых 10 элементов массива;
•напечатать весь массив в строчку.
7• объявить массив G из 6 целых чисел;
•значения элементов массива ввести с клавиатуры;
•посчитать и вывести на экран количество отрицательных элементов массива и их произведение;
•напечатать весь массив в строчку.
8• объявить массив A из 20 целых чисел;
•значения элементов массива вычислить по формуле
A[i] = i2 + 10*i - 5;
6
•определить и вывести максимальный элемент и его номер;
•напечатать весь массив в столбик.
9• объявить массив B из 25 целых чисел;
•значения элементов массива вычислить по формуле
B[i] = 2*i2 + 5*i - 1;
•определить и вывести на экран минимальный элемент массива и его номер;
•напечатать весь массив в столбик.
10• объявить массив А из 24 целых чисел;
•значения элементов массива вычислить по формуле А[i] = i2 - 5*i + 1;
•определить и вывести на экран количество отрицательных элементов и их сумму;
•напечатать весь массив в столбик.
11• объявить массив D из 15 целых чисел;
•значения элементов массива вычислить по формуле
D[i] = i2 – 7*i + 3;
•напечатать весь массив в столбик;
•вычислить и вывести на экран сумму квадратов отрицательных элементов массива.
12• объявить массив K из 20 целых чисел;
•значения элементов массива вычислить по формуле
K[i] = i2 – 5*i + 1;
•напечатать весь массив в столбик;
•вычислить и вывести на экран сумму квадратных корней из положительных элементов массива.
13• объявить массив E из 8 целых чисел;
•значения элементов массива ввести с клавиатуры;
•подсчитать и вывести на экран количество чётных элементов массива и их среднее арифметическое;
•напечатать весь массив в столбик.
14• объявить массив Q из 8 целых чисел;
•значения элементов массива ввести с клавиатуры;
•посчитать и вывести на экран количество отрицательных элементов массива и их сумму;
•напечатать весь массив в строчку.
7
15• объявить массив R из 7 целых чисел;
•значения элементов массива ввести с клавиатуры;
•посчитать и вывести на экран количество отрицательных элементов массива и сумму их квадратов;
•напечатать весь массив в строчку.
16• объявить массив S из 8 целых чисел;
•значения элементов массива ввести с клавиатуры;
•умножить на 2 все нечётные элементы массива;
•напечатать весь массив после изменения в строчку;
•найти сумму всех элементов измененного массива.
17• объявить массив T из 7 вещественных чисел;
•значения элементов массива ввести с клавиатуры;
•умножить на 3 первые 5 элементов массива;
•напечатать весь массив после изменения в строчку
(с 2 знаками после запятой);
• найти сумму всех элементов измененного массива.
18• объявить массив N из 10 целых чисел;
•значения элементов массива ввести с клавиатуры;
•подсчитать и вывести на экран количество четных элементов массива и их произведение;
•напечатать весь массив в столбик.
19• объявить массив M из 15 вещественных чисел;
•значения элементов вычислить по формуле
M[i]= sin(i / 3);
•вычислить и вывести на экран количество положительных элементов массива и их сумму;
•напечатать весь массив в столбик (с 3 знаками после запятой).
20• объявить массив P из 12 вещественных чисел;
•значения элементов массива вычислить по формуле
M[i]= cos(i / 4);
•вычислить и вывести на экран сумму квадратов положительных элементов массива;
•напечатать весь массив в строчку (с 2 знаками после запятой).
8
21• объявить массив Y из 20 целых чисел;
•значения элементов массива вычислить по формуле
Y[i]= i2 +100;
•подсчитать и вывести на экран сумму квадратных корней из элементов массива;
•напечатать весь массив на листе в строчку.
22• объявить массив M из 6 вещественных чисел;
•значения элементов массива ввести с клавиатуры;
•вычислить и вывести на экран сумму первой половины элементов массива;
•вычислить и вывести на экран среднее арифметическое второй половины массива;
•напечатать весь массив в строчку (с 1 знаком после запятой).
23• объявить массив V из 7 вещественных чисел;
•значения элементов массива ввести с клавиатуры;
•вычислить и вывести на экран сумму первых 5 элементов массива;
•вычислить и вывести на экран среднее арифметическое двух последних элементов массива;
•напечатать весь массив в строчку (с 1 знаком после запятой).
24• объявить массив J из 8 целых чисел;
•значения элементов массива ввести с клавиатуры;
•напечатать весь массив в строчку;
•вычислить и вывести на экран произведение первых четырех элементов;
•вычислить и вывести на экран сумму второй половины массива.
25• объявить массив Z из 7 вещественных чисел;
•значения элементов массива вычислить по формуле
Z[i]= sin(i);
•вычислить и вывести на экран произведение всех положительных элементов массива и их количество;
•напечатать весь массив в строчку (с 3 знаками после запятой).
9
26• объявить массив U из 6 вещественных чисел;
•значения элементов массива вычислить по формуле
U[i]= cos(i);
•вычислить и вывести на экран сумму квадратов отрицательных элементов массива и их количество;
•напечатать весь массив в строчку (с 3 знаками после запятой).
27• объявить массив Н из 5 вещественных чисел;
•значения элементов массива ввести с клавиатуры;
•вычислить и вывести на экран произведение всех элементов массива;
•вычислить и вывести на экран среднее арифметическое первого и последнего элементов массива;
•напечатать весь массив в строчку (с 3 знаками после запятой).
Лабораторная работа №2 Обработка двух одномерных массивов
При перезаписи элементов из одного массива в другой важно следить за индексами в каждом массиве. В общем случае, они будут разными, и надо использовать разные переменные. Пусть, например, в массиве M 20 чисел и требуется переписать все его чётные элементы в массив C. Для выбора чётных по значению и по индексу элементов циклы будут разными:
for (i=0, k=0; i<20; i++) |
// проход по всем индексам от 0 до 19 |
if (M[i]%2 == 0) C[k++] = M[i]; |
|
for (i=0, k=0; i<20; i+=2) |
// проход по чётным индексам 0, 2, |
4…18 |
|
C[k++] = M[i];
Для обращения к элементам массива М использован индекс i, а для массива С – другой индекс k, который увеличивается только после записи очередного элемента.
10
