Цель работы: Познакомиться с механизмом составления и организации взаимодействия пользовательских функций языка Си/Си++.
Отчет на лабораторную работу должен содержать:
- задание по варианту;
- листинг программы, записанного по правилам языка Си/Си++ (все значения для вычисления ввести с клавиатуры.);
- составить блок-схему данного алгоритма;
- скриншот результата программы.
7.1 Варианты задания
1. Даны массивы А(5,5), В(5,5), С(5,5). Найти минимальное произведение ненулевых элементов, расположенных в нечетных строках этих массивов.
2. Даны отрезки a,b,c,d. Для каждой тройки этих отрезков, из которых можно построить треугольник, вычислить площади треугольников. Площадь треугольника , где .
3. Даны массивы А(4,4), В(4,4), С(4,4). Найти произведение минимальных элементов двух массивов.
4. Даны массивы A(5,5), B(5,5), C(5,5). Найти произведение минимальных элементов, расположенных выше побочной диагонали в этих массивах.
5. Даны массивы A(5,5), B(5,5), C(5,5). Поменять местами максимальные и минимальные элементы.
|
|
6. Дано натуральное число N (N > 99). Определить число сотен в нем.
7. Даны три массива А(5,5), В(5,5), С(5,5). Поменять местами строки со столбцами местами, если хобя бы один элемент строки будет нулевым.
8. Дано натуральное число N (N > 10000). Определить сумму цифр первых K разрядов числа N (K 4).
9. Даны натуральные числа n,m. Получить произведение m последних цифр числа n.
10. Даны натуральные числа 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.
11. Даны натуральные числа a,b,c,d. Вычислить f(a)·f(b)+f(c) f(d), где
12. Дано натуральное число N. Удалить из записи числа N цифры 0 и 5, оставив прежним порядок остальных цифр. Например, из числа 59015509 должно получиться число 919.
13. Дано натуральное число N. Получить все такие натуральные K, что N делится на K2 и не делится на K3.
14. Даны натуральные целые числа n и m, вычислить A(n,m), где
15. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу (как, например, 153=13+53+33 ). Получить все числа Армстронга, состоящие из двух, трех и четырех цифр.
7.2 Методические указания к выполнению лабораторной работы
Функции применяются для оформления фрагмента программы, используемого более одного раза. Фрагменты программ, описанные в разделе описания функций, вызываются по имени каждый раз, когда необходимо выполнить данный фрагмент программы. Описание функции состоит из заголовка и тела функции Заголовок определяет имя функции, ее тип и формальные параметры, тело определяет действия над данными, выполняемые функцией. Возвращающее функцией значение передается в вызывающую программу оператором return (выражение). Значение "выражения" и есть результат функции (возвращаемого значения). Всякая функция имеет вид:
|
|
<тип _ результата > имя(<список формальных параметров>)
{
тело функции;
}
где <имя> - имя функции (правильный идентификатор);
<тип_результата> - тип возвращаемого функцией результата.
Упоминание имени функции в тексте программы приводит к активизации функции и называется вызовом функции. Отличие функции от процедуры заключается в том, что результатом выполнения операторов, образующих тело функции, является одно единственное значение или указатель, поэтому обращение к функции можно использовать в соответствующих выражениях наряду с другими операндами. При вызове процедуры (функции) фактические параметры подставляются вместо формальных параметров в заголовке процедуры (функции). Механизм замены формальных параметров на фактические параметры позволяет нужным образом построить алгоритм, реализованный в процедуре (функции). Обязательным правилом является то, чтобы количество и тип формальных параметров строго соответствовали количеству и типам фактических параметров в момент обращения к процедуре (функции). Смысл используемых фактических параметров зависит от того, в каком порядке они перечислены при вызове процедуры (функции).
Пример - программа запрашивает элементы целочисленного массива размером 3Х3 и передает сформированный массив в пользовательскую функцию, которая подсчитывает сумму его положительных значений.
#include <stdio.h>
#include <conio.h>
void summa(int a1[ ][3]);
void main(void)
{
int a[3][3];
int i,j;
clrscr();
printf("\n Введите девять целых чисел \n");
for(i=0; i<3; i++)
for(j=0; j<3; j++)
{
printf("\n a[%d][%d]=", i, j);
scanf("%d", &a[i][j]);
}
summa(a);
}
void summa(int a1[ ][3])
{
int i,j,s;
puts(" ФУНКЦИЯ summa ");
puts("----------------------------------");
/* ВЫЧИСЛЕНИЕ СУММЫ ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ МАССИВА */
s=0;
for (i=0; i<3; i++)
{
printf("\n");
for (j=0;j<3;j++)
{
if (a1[i][j]>0)
{
s=s+a1[i][j];
}
}
}
printf("\a СУММА ПОЛОЖИТЕЛЬНЫХ ЭЛЕМЕНТОВ\
МАТРИЦЫ =%d, Press any key... ",s);
getch();
}
Контрольные вопросы
1. Чем функция пользователя отличается от стандартной функции?
2. Какие способы передачи аргументов в функцию.
3. В чем заключается отличие локальных и глобальных переменных.
4. Для чего и каким образом применяется оператор return?
5. Может ли функция вызывать сама себя?
6. Для чего нужны формальные переменные?
7. Как происходит активизация функции?
8. Что такое прототип функции?