-3. Управление передается на первый оператор функции.
-4. Выполнение оператора return в ' теле функции возвращает управление и, возможно, значение в вызывающую функцию. Если оператор return не задан, то управление возвращается после выполнения последнего оператора тела функции. При этом возвращаемое значение не определено.
Рассмотрим программу, которая,печатает квадрат числа от 2 до 25 используя функцию.
#include<stdio.h>
#include<inath.h>
square (int i); // Идет объявление функции
main()
{ clrscrf);
inti=2;
while(i++<25) // Вызывается функция
printf(« Квадрат(%d) числа =%d\n», i, square(i));
getch();
} .
// Идет определение функции
square(int x)
// Пишется тело функции
{ return (x*x); }
Варианты задач
1: Составить программу для определения среднего балла группы по результатам сессии. Оценки групп сведены в матрицы А(25,5), В(23,5), С(22,5), D(24,5). Средний балл вычислять в функции.
2: Составить программу для нахождения наименьших элементов матриц А(10,12), В(15,10) и номеров строк и столбцов, в которых они находятся, используя функцию.
3: Составить программу для записи в массив Z положительных элементов массивов А(40), В(50),С(30) подряд, используя функцию.
4: Составить программу для вычисления значения функции
Z=(xi + yi)/(x: + у2), где Xi.xi - корни уравнения ax2+bx+c=0; yi и у-> -корни уравнения dy2+ey+f=0. Если корни хотя бы одного уравнения комплексные, то вычисляется функция. Zk - (xi + V2j/(yi + уз), Для вычисления корней использовать функцию.
5: Составить программу для нахождения средних значений результатов экспериментов Х(5,6), Y(7,4), Z(5,7). Результаты записать в массив Р(3). Для нахождения максимального элемента матрицы использовать функцию.
6: Составить программу для нахождения элементов целочисленных массивов А(40), В(30), С(60), кратных 3, используя функцию.
7: Составить программу для нахождения сумм элементов каждой строки матриц А(15,20) и В(17,10), используя функцию.
8: Составить программу для вычисления и запоминания в массиве D(3) наибольших элементов массивов A(n), B(m), C(k), используя функцию. Значения n, m, k не превосходят 30.
9: Составить программу с использованием функции для вычисления суммы и количества положительных элементов массивов А(7())„ В(80), С(65).
10: Чего больше: всех возможных трехзначных чисел, записываемых цифрами 1, 2, 3, 4, 5; всех двухзначных чисел, записываемых цифрами 2, 4, 6, 8; всех четырехзначных чисел, записываемых цифрами i. 3, 7, 8. 9 '?. Подсчет количества соответствующих чисел оформить в виде функции.
11: В порт в среднем приходит 3 корабля в день. Какова вероятность того, что в порт в день придет 2 корабля; 4 корабля?. Вычисление вероятности оформить в виде функции.
12: Два спортсмена одновременно начинают движение из одной точки. Первый спортсмен начинает движение со скоростью 10 км/час и равномерно (линейно) за каждый следующий час увеличивает скорость на 1 км. Второй начинает движение со скоростью 9 км/час и равномерно за каждый следующий час увеличивает скорость на 1,6 км/час. Выяснить, какой спортсмен преодолеет больший путь через I час; через 4 час. Вычисление путей оформить с помощью функций.
13: В задаче 12 определить, когда второй спортсмен догонит первого. Решение квадратного уравнения оформить в виде функции.
14: Футболист ударом ноги посылает мяч вертикально вверх с высоты 1 м с начальной скоростью 20 м/с. На какой высоте мяч будет через 1с; Зс; 4с? Вычисление высоты оформить с помощью функции.
15: В задаче 14 определить, когда мяч будет на высоте 5м; 10м. Решение квадратного уравнения оформить в виде функции.
Лабораторная работа № 8
Тема: Составной тип данных: структуры.
В отличие от массивов, все элементы которых должны быть одного типа, структуры объединяют в одной переменной элементы
разных, типов.
Объявления структуры начинается с ключевого слова struct и имеет
два формата записи.
Формат 1:
struct [имя типа-структуры ]
{список-объявлений-элементов}
[ [описатель]…];
Формат 2:
struct наш типа-структуры описатель [описатель]
где имя типа-структуры - это идентификатор, который именует тип структуры.
Описатель - именует переменную структурного типа. Список-объявлений-элеменатов содержит одно или несколько объявлений переменных или полей битов.
Квадратные скобки ([ ]) означает необязательный формат записи и могут быть опущены.
Объявление структуры задает имя структурной переменной и последовательность переменных величин, называемых элементами структуры, которые могут иметь различные типы. Элементы структуры могут быть любого основного типа, массивом, указателем, смесью или структурой. Пример объявление структуры:
struct Teacher {
char fio[40];
int tab_nom;
float oklad; }
spisok[20],*tt;
struct Teacher_sc();
В этом примере объявляется структура типа Teacher из 20 элементов, указатель на структуру типа Teacher и функция, возвращающая структуру типа Teacher.
Элементы структуры запоминаются последовательно в том же порядке, в котором они объявляются: первому элементу соответствует самый младший адрес памяти, а последнему - самый старший.
Память каждому элементу выделяется на границе, соответствующей его типу.
Для определения действительного размера структурной переменной надо использовать операцию sizeof.
// Пример решения задачи с использованием структyp (struct):
#include<stdio.h>
#tnclude<conio.h>
int main(void) .
{ char nom _ tab[20];
char fam [20];
int vvod=0;
int loop, vozr;
double zarp;
struct kol _ struct
{char fam[20];
int vozr;
float zarp;
} kol[20];
printf («\n\n Введите номер таблицы (ведомости) ?: »);
scanf («%20s» ,nom_ tab);
fflush (stdin);
printf (« Сколько записей собираетесь ввести ( можно до 20);»);
scanf («%d», wod);
fflush (stdin);
for (loop=0;loop<vvod; ++loop)
{
printf (« Запись %d\n»,loop);
printf (« Фамилия :»);
scanf («%s».kol [loop].fain);
flush (stdin);
printf (« Ваш возраст :»);
scanf («%d», kol [loop]. vozr);
fflush (stdin);
printf (« Ваша зарплата :»);
scanf («%f»,kol [loop]. zarp );
flush (stdin);
}
primf («\n Теперь введите свою фамилию, возраст и зарплату \n»);
scinf («%20s %d %lf», fam, &vozr, &zarp»);
printf («\n\n Таблица( ведомость):%s\n», nom_tab);
printf (« Таблицу составил:%sвозраст %d $ 15.21F\n», fam , vozr, zarp);
printf («_______________________________________________\n»);
for ( loop = 0;loop< vvod; ++loop)
printf («%4d | % -20s|%5d|%15.21f\n»,
loop+1,
kol [loop]. fam,
kol loop].vozr,
kol [loop].zarp);
printf («_______________________________________________\n»);
return 0;
}
После компиляции и выполнение этой программы на экране появится следующие запросы:
Введите номер таблицы (ведомости)?: 1
Сколько записей собираетесь ввести(можно до 20): 4
Запись 0:
Фамилия: Иванов И.
Ваш возраст: 23
Ваша зарплата. 345.67
Запись 1:
Фамилия: Сидоров В.
Ваш возраст: 22
Ваша зарплата. 545.67
Запись 2:
Фамилия: Токоев Р.
Ваш возраст: 25
Ваша зарплата. 742.00
Запись 3:
Фамилия: Нанаев Н.
Ваша возраст: 842.00
Теперь введите свою фамилию, возраст и зарплату:
Абдыкеримов 29 678.90
После этого получаем резултат в виде:
Таблица 1:
Таблицу составил: Абдыкеримов возраст: 29 $ 678.90
1 | Иванов И. | 23 | 345.67 |
2 | Сидоров В. | 22 | 545.67 |
3 | Токоев Р. | 25 | 742.00 |
4 | Нанаев Н. | 27 | 842.00 |
Варианты задач.
1. Дан файл с записями следующей структуры:
Номер зачетки | Факультет | Ф.И.О. | Курс | Группа | Шифр предмета | Оценка |
В зависимости от запроса необходимо выдать списки студентов заданного факультета и курса, упорядочив их либо по труппам, а внутри групп по алфавиту, либо просто по алфавиту. Кроме того, необходимо распечатать списки неуспевающих по каждому предмету.
2. Задан файл с записями следующей структуры:
Реквизит | Шаблон |
Номер зачетки Факультет Курс Группа Оценки |
Записать его как индексно - последовательный файл и затем по запросу выдавать либо списки успевающих, либо списки неуспевающих, либо полностью информацию по какому - либо студенту.
3. Задан файл с записями следующей структуры
Факультет | Курс | Группа | Номер зачетки | Оценки 1 | Оценки 2 | Оценки 3 |
Файл неупорядочен. Рассортировать его по факультету, курсу, группе, номеру зачетки и распечатать, подсчитав количество неуспевающих и отличников по каждому подразделению.
4. Вводится неупорядоченный файл с записями следующей структуры:
Номер зачетки | Ф.И.О. |
Упорядочить его одним из методов сортировки по убыванию номеров зачеток.
5. Задан файл с записями следующей структуры:
Реквизит | Шаблон |
Номер зачетки Ф.И.О. Курс Группа Оценки |
Создать индексно-последовательный файл и одновременно распечатать его. Вместо оценок выдавать признак успеваемости: неуд. –есть хотя бы одна двойка; уд. –все тройки; см. – смешанные оценки; ох. –отлично и хорошо; отл. – отличные оценки.
6. Имеется файл, содержащий информацию об абитуриентах следующей структуры:
Реквизит | Шаблон |
Факультет Ф.И.О. Оценки Средний балл Пол |
Составить программу записи файла и вывода на печать списка абитуриентов: имеющих средний балл 5; имеющих средний балл 4,5; имеющих средний балл ниже 4,5.