
- •Предисловие
- •Лабораторная работа №1 “ Простые (скалярные) типы данных языка Си. Составление и отладка простейшей Си-программы”
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Лабораторная работа №3 “ Реализация циклов в языке Си ”
- •Вариант 36
- •Вариант 37
- •Вариант 38
- •Вариант 39
- •Вариант 11
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 2
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 8
- •Вариант 9
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 4
- •Вариант 5
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Лабораторная работа №8 “ Работа со структурами ”
- •Вариант 22
- •Вариант 23
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Лабораторная работа №9 “ Потоки ввода/вывода в Си ”
- •Содержание
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
И.С. Кислицкая
ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ НА ЯЗЫКЕ СИ
Учебно-методическое пособие
Липецк – 2010
УДК 681.3.06
ББК 32.973-018.1
П12
Кислицкая И.С. Практикум по программированию на языке Си / И.С. Кислицкая. – Липецк, 2010. – 100 с.
ISBN 5-94723-967-1
Данное пособие предназначено для отработки навыков программирования на языке Си на лабораторных занятиях, а также для самостоятельной работы. В практикуме на примерах рассматриваются средства языка Си, используемые в рамках структурной парадигмы: стандартные типы данных, основные конструкции, массивы, строки, структуры, функции, динамические структуры данных. Пособие ориентировано на студентов вузов, изучающих программирование, а также преподавателей, ведущих курс программирования.
Рецензенты:
И.А. Шуйкова, кандидат технических наук, доцент, ЛШУ
Г.О.Федоркова, кандидат технических наук, доцент ЛГТУ
ISBN 5-94723-967-1
© Кислицкая И.С., 2010
Предисловие
В практикуме на примерах рассматриваются различные алгоритмы, методы и приёмы написания программ, средства языка Си, используемые в рамках структурной парадигмы: стандартные типы данных, основные конструкции, массивы, строки, структуры, функции, динамические структуры данных.
Весь материал представляет собой цикл лабораторных работ по следующим темам:
Простые (скалярные) типы данных языка Си. Составление и отладка простейшей Си-программы
Составление и отладка разветвляющихся программ на Си
Реализация циклов в языке Си
Составление алгоритмов и программ обработки массивов
Указатели. Динамическое управление памятью
Обработка символьных строк
Указатели в параметрах функций
Работа со структурами
Потоки ввода/вывода в Си
Реализация динамических информационных структур
Для каждой лабораторной работы даны методические рекомендации к её выполнению, рассмотрены примеры выполнения заданий. Все программы, тексты которых приведены в качестве примеров, отлажены и протестированы. Тексты программ содержат комментарии. К каждой теме приведён список заданий для самостоятельного выполнения (по вариантам), дифференцированных по сложности. Так, задания I-го уровня требуют решения простых задач, которые сводятся к типовым алгоритмам. Задания II-го уровня содержат более сложные задачи, требующие использования сочетания стандартных приёмов и некоторого творческого подхода. Задания III-го уровня требуют применения нестандартных приёмов, разработки нетривиальных алгоритмов и рекомендуются для выполнения более подготовленным студентам.
Лабораторная работа №1 “ Простые (скалярные) типы данных языка Си. Составление и отладка простейшей Си-программы”
Методические указания
Переменным и функциям следует давать имена, отражающие их назначение.
Выбирайте тип переменных с учетом значений, которые они потенциально могут принимать в программе. Не используйте вещественный тип для переменных, которые могут принимать только целочисленные значения.
Каждый ввод данных с клавиатуры предваряйте приглашением.
Текст программы снабжайте комментариями. Комментарий к определению функции обязателен. Он должен содержать: назначение функции; описание возвращаемого значения; смысл каждого формального параметра.
Пример
Определить длину окружности и площадь круга по известному радиусу. Определение длины окружности и площади круга оформить в виде отдельных функций.
#include <stdio.h> //Директива препроцессора
#define PI 3.1415 //Директива препроцессора
double circlen(double r); //Прототип функции circlen
double circsqr(double r); //Прототип функции circsqr
void main()
{
double r=1; //Объявление переменной r с инициализацией
double len; //Объявление переменной len с инициализацией
len = circlen (r); //Вызов функции circlen
printf("Length=%.1lf\n",len); //Печать результата на экране
double s;
s= circsqr (r); //Вызов функции circsqr
printf("Square = %.1lf\n",s);
}
/*
Функция circlen() возвращает длину окружности радиуса r
*/
double circlen (double r)
{
double d;
d=2*PI*r;
return d;
}
/*
Функция circsqr() возвращает площадь круга с радиусом r
*/
double circsqr (double r)
{
double p;
p=PI*r*r;
return p;
}
Задания для самостоятельного выполнения
Задания I уровня сложности
Вариант 1
Найти объем и площадь полной поверхности шара, радиус которого известен.
Вариант 2
Найти объем и площадь полной поверхности конуса, если известны его высота и радиус основания.
Вариант 3
Найти полное сопротивление цепи, состоящей из двух резисторов R1 и R2, при их а) последовательном; б) параллельном соединении.
Вариант 4
Определить объем и площадь полной поверхности прямоугольного параллелепипеда, если известны его измерения.
Вариант 5
Вычислить расстояние между двумя точками плоскости, если известны координаты этих точек.
Вариант 6
Определить максимальный КПД тепловой машины, если температура нагревателя равна t1oC, а температура холодильника - t2oC.
Указание. Максимальный КПД тепловой машины определяется выражением max=(T1-T2)/T1, где T1 и T2 - температура по абсолютной шкале. ToK=toC+273.
Вариант 7
Вычислить среднюю кинетическую энергию молекул идеального газа при температуре toC.
Указание. Cредняя кинетическая энергия E теплового движения молекул идеального газа связана с абсолютной температурой Т газа уравнением: Е=3/2kT, где k=1.381023 ДжК-1 (постоянная Больцмана). ToK=toC+273.
Вариант 8
Определить напряжение на выходе источника постоянного тока с известной величиной ЭДС Е В, внутренним сопротивлением R1 Ом при подключении нагрузки с электрическим сопротивлением R2 Ом.
Указание. U=IR2, I=Е / (R1+R2).
Вариант 9
Определить, с какой силой действует магнитное поле с индукцией В Тл на проводник длиной L м, расположенный перпендикулярно вектору индукции. Сила тока в проводнике равна I А.
Указание. Модуль силы Ампера F определяется выражением: F=IBL.
Вариант 10
Составьте программу, определяющую период свободных колебаний математического маятника по его длине L. Длина маятника, демонстрирующего вращение Земли в Исаакиевском соборе в Санкт-Петербурге, равна 98 м. Определите период его свободных колебаний.
Указание.
Формула
периода колебаний математического
маятника:
,
где g
– ускорение свободного падения.
Вариант 11
Вычислить объем и площадь полной поверхности прямого цилиндра, если известны его высота и радиус основания.
Вариант 12
Определить путь, пройденный телом за t секунд при постоянном ускорении а, если его начальная скорость vo.
Вариант 13
Заданы действительная и мнимая части комплексного числа z = x + iy. Преобразовать его в тригонометрическую форму и напечатать в виде: z = r(cosφ + isinφ).
Указание.
.
Вариант 14
Треугольник задается координатами своих сторон на плоскости. Найти: а) площадь треугольника; б) периметр треугольника.
Указание. Для вычисления расстояния между двумя точками плоскости по заданным координатам этих точек определить отдельную функцию.
Лабораторная работа №2 “Составление и отладка разветвляющихся программ на Си”
Методические указания
Способ реализации ветвлений следует выбирать так, чтобы добиться максимальной читаемости и простоты структуры программы.
Если в какой-либо ветви вычислений условного оператора требуется выполнить более одного оператора, то их следует объединять в блок.
Вложенные операторы ветвления if следует располагать (используя отступы) так, чтобы ключевое слово else (если оно есть) располагалось строго под соответствующим ему ключевым словом if
Пример
На плоскости в декартовой системе координат заданы своими координатами две точки и квадрат со стороной а с центром в начале координат. Определить, лежат ли эти точки:
а) обе внутри квадрата (либо на его сторонах);
б) обе снаружи квадрата;
в) одна внутри, другая снаружи квадрата.
В программе определить функцию, которая выясняет, лежит ли точка с заданными координатами внутри квадрата со стороной а с центром в начале координат либо снаружи его.
#include <stdio.h>
#include <windows.h>
#include <wincon.h>
int sqrxy(double a, double x, double y);
void main()
{
SetConsoleOutputCP(1251); //Русификация консоли
double a=6,x1=9,y1=10,x2=1,y2=7;
int t1,t2;
t1= sqrxy (a,x1,y1); //Вызов функции sqrxy для точки (х1,y1)
t2= sqrxy (a,x2,y2); //Вызов функции sqrxy для точки (х2,y2)
if (t1 && t2)
puts("Обе точки внутри квадрата.");
else
if (t1==0 && t2==0)
puts("Обе точки снаружи квадрата.");
else
puts("Одна точка внутри, другая снаружи.");
}
/*
Функция sqrxy() возвращает 1, если точка с координатами x,y лежит внутри квадрата со стороной a, иначе функция возвращает 0
*/
int sqrxy (double a, double x, double y)
{
if ((x<=a/2 && x>=-a/2) && (y>=-a/2 && y<=a/2))
return 1;
else
return 0;
}
Задания для самостоятельного выполнения
Задания I уровня сложности