- •Лабораторные работы. Сборник задач.
- •Оглавление
- •Часть 1. Лаборатоные работы
- •Работа со структурами и объединениями …………………………………….91
- •3 Задача
- •4 Задача
- •5 Задача
- •6 Задача
- •Дополнительное условие:использование цикла с предусловием.
- •1 Задача
- •2 Задача
- •Дополнительное условие: программа написана без использования функции.
- •Дополнительное условие: программа написана с использованием функций.
- •3 Задача
- •Дополнительное условие: программа написана без использования функции.
- •Дополнительное условие: программа написана с использованием функции.
- •4 Задача
- •Дополнительное условие: программа написана без использования функции
- •Дополнительное условие: программа написана с использованием функции.
- •Самостоятельная работа
- •Лабораторная работа №3
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •Лабораторная работа №6
- •1 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •4 Задача
- •Синтаксический анализатор
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •3 Задача
- •Работа с каталогами
- •Самостоятельная работа
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •2 Задача
- •1 Задача Реализовать очередь, состоящую из целых чисел
- •Комментарий:
- •2 Задача
- •1 Задача
- •Идеально-сбалансированные деревья
- •1 Задача
- •2 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •2 Задача
- •3 Задача
- •1 Задача
- •1 Задача
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности.
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •Работа с несколькими массивами
- •Преобразование массива
- •Изменение элементов массива
- •2 Уровень сложности Формирование массива и вывод его элементов
- •Анализ элементов массива
- •Преобразование массива
- •Изменение элементов массива
- •Удаление и вставка элементов
- •Серии целых чисел
- •3 Уровень сложности Множества точек на плоскости
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
- •Not простое_логическое
- •(Простое_логическое знак_операции простое_логическое)
- •Построить синтаксический анализатор для понятия предложение.
- •1 Уровень сложности
- •2 Уровень сложности
- •1 Уровень сложности
- •Примеры:
- •Двусвязные списки
- •1 Уровень сложности
- •2 Уровень сложности
- •3 Уровень сложности
5 Задача
Цель: работа с перечислимым типом.
Вывести сообщение, если введенный день недели суббота или воскресенье, и другое сообщение, если это рабочий день.
#include <stdio.h>
/* описание перечислимого типа*/
enumDays
{
Monday=1,
Tuesday,
Wednesday,
Thusday,
Friday,
Saturday,
Sunday
};
int main()
{
/* объявление переменной для работы с номером дня */
int choice;
puts("Enter a day (1-7): ");
scanf("%d", &choice);
/* проверка, является ли введенный день недели субботой или воскресеньем*/
if ((choice == Sunday) || (choice == Saturday))
puts(" You're already off on weekend! ");
else
puts("Unfortunately, that is a working day");
return 0;
}
6 Задача
Цель: работа с циклами.
Вычислить сумму первых N натуральных чисел.
6а
Дополнительное условие: использовать цикл с предусловием.
#include <stdio.h>
/* препроцессорная обработка: везде в тексте программы вместо N подставляется значение 6*/
#define N 6
int main()
{
/* инициализация переменной при объявлении*/
inti= 1;
/* объявление переменной для хранения текущего значения суммы*/
intsum= 0;
/* пока не все числа просмотрены */
while (i < =N)
{
/* значение переменной sum увеличивается на текущеее значение i*/
sum=sum+i; /*эффективнее sum += i;*/
/* наращивание значений переменной i на 1*/
i=i+1; /*лучше i+=1; или i++ */
}
printf("sum = %d\n" , sum) ;
return 0;
}
6б
Дополнительное условие: использовать цикл с постусловием.
#include <stdio.h>
int main()
{
constintN=5; /*описание целой константы вместо прероцессорного оператора*/
int i = 1;
int sum = 0;
do
{
sum += i;
i++;
}
while(i <= N);
printf("sum = %d\n ",sum);
return 0;
}
6в
Дополнительное условие:использование цикла с предусловием.
#include <stdio.h>
#define N 5
int main()
{
int i;
int sum=0;
for (i=1; i<=N; i++)
sum+=i;
/* можно также использовать оператор цикла в виде
for (i=1, sum=0; i<=N; sum+=i, i++); */
printf( "sum = %d \n ",sum);
return 0;
}
Самостоятельная работа
Вывести данные о себе (фамилию, год рождения, пол, средний балл аттестата). Предусмотреть ввод с клавиатуры года рождения и среднего балла.
Изменить задачу 3а, так, чтобы можно было вводить в цикле значения x. Цикл должен работать до первого значения, не принадлежащего области допустимых значений.
Лабораторная работа №2
Целые числа
Цель: закрепление на практике знаний основных структур языка. Использование простейших алгоритмов. Понятие функции. Передача параметров в функцию. Возвращение значения функцией.
Методические рекомендации: лабораторная работа рассчитана на 2 часа и состоит из анализа четырех заданий, рассматриваемых в двух вариантах: без использования и с использованием функции и выполнения самостоятельной работы.
Обязательное зачетное задание.
Необходимый уровень знаний:
синтаксис языка;
основные конструкции языка.
1 Задача
Цель: работа с операторами нахождения модуля числа, остатка от деления, целочисленного деления. Подключение библиотеки для вычисления математических функций.
Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа n.
1а
Дополнительное условие: программа написана без использования функции.
#include <stdio.h>
#include <math.h>
int main ()
{
// описание переменной булевского типа, выделение памяти под переменную и
// присваивание ей значения false
bool f=false;
int m;
int n;
scanf("%d",&n);
// вычисления квадрата введенного числа
n*=n;
do
{
// нахождение остатка от деления на 10
m=n%10;
// если остаток от деления равен 3, то
if (m==3)
// присваиваем переменной f значение true
f=true;
// нахождение результата целочисленного деления
m=n/10;
// присвоение переменной n значения переменной m
n=m;
}
// проверяем каждый разряд на совпадение с 3 (слева направо)
while (m!=0);
// если нашли 3 в каком-нибудь разряде
if (f)
printf("YES \n");
else
printf("NO \n");
return0;
}
1б
Цель: первичное знакомство с понятием функции. Передача параметров в функцию. Возвращение значения из функции.
Дополнительное условие: программа написана с использованием функции.
#include <stdio.h>
#include <math.h>
#define PARAM 3
// описание прототипа функции, который проверяет, входит ли цифра 3 в запись числа n.
bool isContainsParam(int n);
bool isContainsParam(int n)
{
// вычисление квадрата введенного числа
n *= n;
do
{
// если остаток от деления на 10 равен 3, то
if (PARAM == n % 10)
{
// возвращаем true
return true;
}
n /= 10;
}
// проверяем каждый разряд на наличие 3 (слева направо)
while (n != 0);
// функция возвращает значение false, если не найден PARAM в числе n
return false;
}
int main ()
{
int n;
scanf("%d",&n);
// проверка на нахождение 3 в каком-нибудь разряде. Вызов функции, в которую
// передается число, которое проверяется
if (isContainsParam(n))
{
printf("YES \n");
}
else
{
printf("NO \n");
}
return0;
}