- •Лабораторный практикум
- •Основы программирования на алгоритмическом языке с
- •Лабораторная работа №1 Линейные и разветвляющиеся вычислительные процессы
- •Краткие теоретические сведения
- •Алфавит языка с
- •Классификация данных
- •Декларирование объектов
- •Структура программы
- •Функции вывода информации
- •Функции ввода информации
- •Стандартные математические функции
- •Операция присваивания
- •Операторы перехода
- •If (условие ) оператор1;
- •Оператор выбора switch
- •Пример линейного алгоритма
- •Пример использования оператора if
- •Варианты индивидуальных заданий
- •Оператор цикла for
- •For (выражение_1; выражение_2; выражение_3 ) оператор;
- •Циклы типа while и do–while
- •Вложенные циклы
- •Контрольные вопросы
- •Лабораторная работа № 3 Программирование циклических вычислительных процессов с использованием одномерных массивов и строк
- •Краткие теретические сведения
- •Строки, как одномерные массивы символов
- •Примеры использования стандартных функций работы со строками
- •Варианты индивидуальных заданий
- •Указатели и операции над адресами
- •Операции над указателями (адресная арифметика)
- •Указатели на указатели
- •Таким образом, указатели на указатели – это имена многомерных массивов.
- •Массивы указателей
- •Динамическое размещенея данных
- •Контрольные вопросы
- •Лабораторная работа №5 Функции пользователя
- •Краткие теоретические сведения
- •Область действия переменных
- •Пример работы с функциями Ввести массив NxN (не больше 50) целых чисел и в функции посчитать сумму его положительных значений.
- •Пример на использование структур
- •Контрольные вопросы
- •Лабораторная работа №7 Файлы в языке с.
- •Контрольные вопросы
- •Лабораторная работа №8 Графический режим работы в языке с.
- •Функции для подготовки графической системы
- •Основные функции для получения изображения
- •Контрольные вопросы
- •Команды работы с блоками:
- •Задание опций интегрированной среды.
- •Набор текста программы.
- •Компиляция, редактирование связей, запуск программы на выполнение.
- •Многофайловая компиляция
- •Отладка программы.
- •Использование глобальных переменных, объявленных вне файла.
- •Литература
Пример работы с функциями Ввести массив NxN (не больше 50) целых чисел и в функции посчитать сумму его положительных значений.
#include <stdio.h>
#include <conio.h>
void summa(int, int a1[ ][50]);
void main(void)
{
int a[50][50];
int i,j,N;
clrscr();
puts("\n Введите размер массива N (<50)\n");
scanf(“%d”,&N);
printf("\n Введите данные \n");
for(i=0; i<N; i++)
for(j=0; j<N; j++)
{
printf("\n a[%d][%d]=", i+1, j+1);
scanf("%d", &a[i][j]);
}
summa(N,a);
}
void summa(int n, int a1[ ][50])
{
int i,j,s;
puts(" ФУНКЦИЯ summa ");
/* ВЫЧИСЛЕНИЕ СУММЫ ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ МАССИВА */
for (s=0,i=0; i<n; i++)
{
printf("\n");
for (j=0;j<n;j++)
if (a1[i][j]>0)
s+=a1[i][j];
}
printf("\a СУММА = %d, Press any key... ",s);
getch();
}
Варианты индивидуальных заданий
-
Даны три натуральных числа. Определить их наибольший делитель (определение HOD – см. N 10).
-
Даны отрезки a,b,c,d. Для каждой тройки этих отрезков, из которых можно построить треугольник, вычислить площади треугольников. Площадь треугольника , где .
-
Дано натуральное число N. Определить, если это возможно, пару x,y таких натуральных чисел, что .
-
Дано натуральное число N. Определить все пары x,y натуральных чисел таких, что , .
-
Даны действительные числа x,y (x>0, y>1). Получить целое число K (положительное, отрицательное или равное нулю), удовлетворяющее условию <.
-
Дано натуральное число N (N > 99). Определить число сотен в нем.
-
Дано натуральное число N (N 99).Выяснить, верно ли, что N2 равно кубу суммы цифр числа N.
-
Дано натуральное число N (N > 10000). Определить сумму цифр первых K разрядов числа N (K 4).
-
Даны натуральные числа n,m. Получить произведение m последних цифр числа n.
-
Даны натуральные числа n,m. Найти наибольший общий делитель n и m (наименьшее общее кратное n и m) используя алгоритм Евклида.
Пусть n и m – одновременно не равные нулю целые неотрицательные числа и пусть m n. Тогда, если n = 0, то NOD (n,m) = m, и если n ≠ 0, то для чисел m, n, r, где r остаток от деления m на n, выполняется равенство NOD (m,n) = NOD (n,r). Например, NOD (15,6) = NOD (6,3) = NOD (3,0) = 3.
-
Даны натуральные числа a,b,c,d. Вычислить f(a)·f(b)+f(c)f(d), где
-
Дано натуральное число N. Удалить из записи числа N цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться число 919.
-
Дано натуральное число N. Получить все такие натуральные K, что N делится на K2 и не делится на K3.
-
Даны натуральные целые числа n и m, вычислить A(n,m), где
-
Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу (как, например, 153=13+53+33 ). Получить все числа Армстронга, состоящие из двух, трех и четырех цифр.
-
Имеется n населенных пунктов, перенумерованных от 1 до n (n=10). Некоторые пары пунктов соединены дорогами. Определить, можно ли попасть по этим дорогам из первого пункта в n-й пункт. Информация о дорогах задается в виде последовательности пар чисел i и j ( i<j ) указывающих, что i-й и ј-й населенный пункт пункты соединены дорогой. Признак окончания этой последовательности – пара нулей.
-
Напечатать все цифры числа 2500 и числа 1!+2!+…+100!
-
Даны координаты вершин двух треугольников. Определить, какой из них имеет большую площадь.
-
Три прямые на плоскости заданы уравнением akx+bky=ck (k=1,2,3). Если эти прямые попарно пересекаются и образуют треугольник, тогда найти его площадь.
-
Два простых числа называются «близнецами», если они отличаются друг от друга на 2 (например, числа 41 и 43). Напечатать все пары «близнецов» на отрезке [n,2n], где n – заданное целое число, больше 2.
-
Ввести целое натуральное число N. Сформировать треугольник Паскаля по алгоритму:
C00
C10 C11
C20 C21 C22
C30 C31 C32 C33
C40 C41 C42 C43 C44
………………………..
Здесь , где n!=1·2·3·….·n – факториал числа n.
-
«Ханойская башня». Имеются три колышка A,B и C и n дисков разного размера, перенумерованных от 1 до n в порядке возрастания их размеров. Сначала все диски надеты на колышек A так, как показано на рис.1,а. Требуется перенести все диски с колышка A на колышек С (рис.1,в), соблюдая при этом следующие условия:диски можно переносить только по одному, больший диск нельзя ставить на меньший.
-
Написать программу, которая печатает последовательность действий (в виде «перенести диск с q на r», где q и r – это А,В или С), решающую указанную задачу для n дисков, где n- заданное натуральное число. (При правильном переносе n дисков с А на С обязательно встретится конфигурация, показанная на рис.6,б).
А В С А В С А В С
а) б) с)
Рис. 1
24. «Задача о 8 ферзях». На шахматной доске расставить 8 ферзей так, чтобы они не «били» друг друга (всего существует 92 расстановки).
25.«Метод фон Неймана». Дано n вещественных чисел. Упорядочить их по неубыванию:образовать два массива А и В и записать исходные числа в А; упорядочить пары соседних чисел (А1 и А2, А3 и А4 и т.д.) и записать их в В; взять из В по две соседние упорядоченные пары и, слив их в упорядоченные четверки, снова записать в А; затем каждые две соседние четверки из В слить в упорядоченные восьмерки и перенести в А, и т.д.
26. Даны два массива чисел X и Y размером 100 элементов. Составить программу меняющую последовательно местами значение элементов xk и yk не используя промежуточных величин.
27. Дана последовательность из N целых чисел, среди которых нет двух одинаковых. Требуется вычеркнуть минимально возможное количество чисел так, чтобы оставшиеся числа шли в порядке возрастания.
28. Имеется 9 карточек, на которых написаны цифры 1,2,3,4,5,6,7,8,9 (по одной цифре на каждой карточке). Из этих карточек составляются два числа. Первое число – это числитель дроби, а второе число – это знаменатель дроби. Каждая карточка должна быть обязательно использована. Знаменатель дроби состоит из пяти цифр. Например, числитель – 6729, знаменатель – 13458 (все карточки использованы). Дробь 6729/13458 в точности равна ½.
29. Ввести два натуральных числа N и M. Найти такую комбинацию карточек (если она существует), которая образовала бы дробь, равную в точности N/M. Если комбинация не единственная, то вывести их все.
Контрольные вопросы
-
Чем функция пользователя отличается от стандартной функции ?
-
Способы передачи аргументов в функцию?
-
Поясните понятие “локальные” и “глобальные” переменные?
-
Для чего и каким образом применяется оператор return ?
ЛАБОРАТОРНАЯ РАБОТА № 6
Программирование алгоритмов с использованием структур
Цель работы:
Изучить особенности работы с составным типом данных – структуры.
Краткие теоретические сведения
Структура объединяет логически связанные данные разных типов. Структурный тип данных определяется описанием:
struct имя_структуры {
описание элементов;
};
Для выделения памяти под структуру надо определить структурную переменную:
struct имя_структуры имя_переменной;
При определении структур можно задавать начальные значения элементам структур. Для ввода значений элементов структур можно использовать оператор cin>> потокового ввода или оператор ввода scanf.
Над структурами допускаются следующие операции:
1) Взятие адреса структуры. Адрес структуры может быть получен путем применения операции указатель (&) к структурной переменной.
2) Доступ к элементу структуры можно выполнить с помощью операций: точка (.) - прямой доступ или стрелка ( -> ) - доступ по указателю.
Структурная переменная может использоваться так же, как и переменные типов float,int,char и т.д. Например:
struct gr /* имя структуры */
{ char fio[10]; /* элемент структуры */
int est[25]: /* элемент структуры */
int nomer; /* элемент структуры */
} gruppa1; /* имя структурной переменной */
struct gr gruppa2; /* объявление структурной переменной */
Если описатель структуры записан до размещения всех функций в исходном файле, то он будет доступен каждой из функций в этом файле. При определении структурной переменной можно инициалиировать (станавливать значения полям структуры). Например
struct date { int day,month,year;};
d[5]={ { 1,3,1980},
{ 5,1,1990},
{ 1,1,2002}
};