Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод_Практ_new1.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
225.79 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ

ФГБОУ ВПО «Тольяттинский государственный университет»

Кафедра «Прикладная математика и информатика»

Мельникова Е.А., Панин А.Г

Основы программирования

на языке С/С++

Лабораторный практикум

Тольятти, 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;

}

Задания для самостоятельного решения

  1. Даны координаты двух противоположных вершин прямоугольника: (x1, y1), (x2, y2). Стороны прямоугольника параллельны осям координат. Найти периметр и площадь данного прямоугольника.

  2. Дан диаметр окружности d. Найти ее длину L = p·d. В качестве значения p использовать 3.14.

  3. Даны два круга с общим центром и радиусами R1 и R2 (R1 > R2). Найти площади этих кругов S1 и S2, а также площадь S3 кольца, внешний радиус которого равен R1, а внутренний радиус равен R2

  4. Дана площадь S круга. Найти его диаметр D и длину L окружности, ограничивающей этот круг, учитывая, что L = 2·p·R, S = p·R2. В качестве значения p использовать 3.14.

  5. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a·b·c и площадь поверхности S = 2·(a·b + b·c + a·c).

  6. Дано значение температуры T в градусах Фаренгейта. Определить значение этой же температуры в градусах Цельсия. Температура по Цельсию TC и температура по Фаренгейту TF связаны следующим соотношением: TC = (TF – 32)·5/9.

  7. Скорость первого автомобиля V1 км/ч, второго  V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Данное расстояние равно сумме начального расстояния и общего пути, проделанного автомобилями; общий путь = время · суммарная скорость

  8. Дано число A. Вычислить A8, используя вспомогательную переменную и три операции умножения. Для этого последовательно находить A2, A4, A8. Вывести все найденные степени числа A.

  9. Дано значение угла a в радианах (0 < a < 2·p). Определить значение этого же угла в градусах, учитывая, что 180° = p радианов. В качестве значения p использовать 3.14.

  10. Даны координаты трех вершин треугольника: (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;

}

Задания для самостоятельного решения

  1. Даны целые положительные числа A и B (A > B). На отрезке длины A размещено максимально возможное количество отрезков длины B (без наложений). Используя операцию взятия остатка от деления нацело, найти длину незанятой части отрезка A.

  2. Дано трехзначное число. В нем зачеркнули первую слева цифру и приписали ее справа. Вывести полученное число

  3. С начала суток прошло N секунд (N  целое). Найти количество полных минут, прошедших с начала последнего часа

  4. Дни недели пронумерованы следующим образом: 1  понедельник, 2  вторник, … , 6  суббота, 7  воскресенье. Дано целое число K, лежащее в диапазоне 1–365. Определить номер дня недели для K-го дня года, если известно, что в этом году 1 января было вторником.

  5. Дано трехзначное число. Вывести число, полученное при перестановке цифр десятков и единиц исходного числа (например, 123 перейдет в 132).

  6. Дан номер некоторого года (целое положительное число). Определить соответствующий ему номер столетия, учитывая, что, к примеру, началом 20 столетия был 1901 год.

  7. Дано трехзначное число. Найти сумму и произведение его цифр.

  8. Даны целые положительные числа A, B, C. На прямоугольнике размера A*B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике, а также площадь незанятой части прямоугольника

  9. Дано целое число, большее 999. Используя одну операцию деления нацело и одну операцию взятия остатка от деления, найти цифру, соответствующую разряду сотен в записи этого числа