
- •Лабораторная работа №1 Линейные и разветвляющиеся алгоритмы
- •Арифметические выражения
- •Операции с целыми числами
- •Логические выражения
- •Организация ветвлений в алгоритмах
- •Лабораторная работа №2 Циклические алгоритмы
- •Рекуррентные последовательности
- •Вычисление характеристик числовой последовательности
- •Определение свойства числовой последовательности
- •Формирование массива Пример
- •Вычисление характеристик массива
- •Модификация массивов
- •I часть
- •II часть Пример
- •III часть
- •Лабораторная работа №4 «Двумерные массивы»
- •Вывод элементов
- •Вычисление характеристик матриц
- •Модификация
- •Литература
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
ФГБОУ ВПО «Тольяттинский государственный университет»
Кафедра «Прикладная математика и информатика»
Мельникова Е.А., Панин А.Г
Основы программирования
на языке С/С++
Лабораторный практикум
Тольятти, 2012
УДК 004.43(075.5)
ББК 32.973-018.1
М482
Мельникова Е.А., Панин А.Г. «Основы программирования на языке С/С++»
Лабораторный практикум – Тольятти, 2012, 52 стр.
Рецензенты:
д.т.н., профессор Тольяттинского государственного университета Н.И. Лиманова,
к.ф.-м.н., доцент Ульяновского государственного педагогического университета им.И.Н.Ульянова Ю.В. Нагорнов
Научный редактор к.ф.-м.н. Г.А.Тырыгина
В лабораторном практикуме собраны задачи по начальным темам курса «Программирование» - линейные алгоритмы, операторы ветвления, логические выражения, циклы, простые структуры данных – массивы и матрицы. Пособие помогает студентам овладеть основами языков программирования С и С++, научиться составлять и отлаживать простые программы. Для каждой темы приведены примеры программ на С и С++, демонстрирующие приёмы и языковые конструкции, которые необходимо использовать для написания лабораторной работы.
Данное пособие предназначено для студентов специальностей «Прикладная математика и информатика», «Математическое обеспечение и администрирование информационных систем». Пособие может быть использовано для освоения не только курса «Программирование», но и для соответствующих тем курса «Языки и методы программирования».
Рекомендовано к изданию Научно-методическим советом
Тольяттинского государственного университета
© ГОУ ВПО Тольяттинский государственный университет, 2012.
Мельникова Е.А., Панин А.Г 1
Основы программирования 1
на языке С/С++ 1
Лабораторный практикум 1
Лабораторная работа №1 4
Линейные и разветвляющиеся алгоритмы 4
Арифметические выражения 4
Операции с целыми числами 6
Логические выражения 8
Организация ветвлений в алгоритмах 9
Лабораторная работа №2 13
Циклические алгоритмы 13
Рекуррентные последовательности 13
Вычисление характеристик числовой последовательности 15
Определение свойства числовой последовательности 18
Лабораторная работа №3 21
«Одномерные массивы» 21
Вывод элементов массива 21
Формирование массива 23
Вычисление характеристик массива 27
Модификация массивов 31
Лабораторная работа №4 43
«Двумерные массивы» 43
Вывод элементов 43
Вычисление характеристик матриц 45
Модификация 48
Литература 53
Лабораторная работа №1 Линейные и разветвляющиеся алгоритмы
Цель: научиться записывать арифметические и логические выражения в соответствии с правилами языка программирования, применять присваивание, ввод, вывод значений, ветвления в алгоритмах.
Арифметические выражения
Пример
Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу c и периметр P.
Вариант программы на языке С
#include <stdio.h>
#include <math.h>
int main()
{
float a = 0, b = 0, c, p;
printf("Введите значения катетов (a и b): ");
scanf("%f%f", &a, &b);
c = sqrt(a*a + b*b);
p = a + b + c;
printf("Длина гипотенузы равна %f\n", c);
printf("Периметр равен %f\n", p);
return 0;
}
Вариант программы на языке С++
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a, b;
cout << "Введите значения катетов (a и b): ";
cin >> a >> b;
float c = sqrt(a*a + b*b);
float p = a + b + c;
cout << "Длина гипотенузы равна " << c << endl;
cout << "Периметр равен " << p << endl;
return 0;
}
Задания для самостоятельного решения
Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.
Дан диаметр окружности d. Найти ее длину L = p·d. В качестве значения p использовать 3.14.
Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2
Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = 2·p·R, S = p·R2. В качестве значения p использовать 3.14.
Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).
Дано значение температуры T в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цельсию TC и температура по Фаренгейту TF связаны следующим соотношением: TC = (TF – 32)·5/9.
Скорость первого автомобиля V1 км/ч, второго V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Данное расстояние равно сумме начального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость
Дано число A. Вычислить A8, используя вспомогательную переменную и три операции умножения. Для этого последовательно находить A2, A4, A8. Вывести все найденные степени числа A.
Дано значение угла a в радианах (0 < a < 2·p). Определить значение этого же угла в градусах, учитывая, что 180° = p радианов. В качестве значения p использовать 3.14.
Даны координаты трех вершин треугольника: (x1, y1), (x2, y2), (x3, y3). Найти его периметр и площадь, используя формулу для расстояния между двумя точками на плоскости
Операции с целыми числами
Пример
Дано двузначное число. Вывести число, полученное при перестановке цифр исходного числа.
Вариант программы на языке С
#include <stdio.h>
int main()
{
int n = 0, a, b, c;
printf("Введите число: ");
scanf("%d", &n);
a = n % 10;
b = n / 10;
c = a * 10 + b;
printf("Результат: %d\n", c);
return 0;
}
Вариант программы на языке С++
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "Введите число: ";
cin >> n;
int a = n % 10;
int b = n / 10;
int c = a * 10 + b;
cout << "Результат: " << c << endl;
return 0;
}
Задания для самостоятельного решения
Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.
Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число
С начала суток прошло N секунд (N целое). Найти количество полных минут, прошедших с начала последнего часа
Дни недели пронумерованы следующим образом: 1 понедельник, 2 вторник, … , 6 суббота, 7 воскресенье. Дано целое число K, лежащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было вторником.
Дано трехзначное число. Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).
Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.
Дано трехзначное число. Найти сумму и произведение его цифр.
Даны целые положительные числа A, B, C. На прямоугольнике размера A*B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника
Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду сотен в записи этого числа