Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Классы памяти и правила областей действияСодержание книги
Поиск на нашем сайте
В языке Си различают три типа переменных: глобальные, локальные переменные и формальные параметры. Область видимости (действия) локальных переменных – блоки, где они объявлены. При выходе из блока локальная переменная теряется. Глобальные переменные объявляются вне какой-либо функции и могут быть использованы в любом месте программы, но перед их первым использованием они должны быть объявлены и проинициализированы. Область действия глобальных переменных – от точки в файле, где она объявлена и до конца файла. Сами функции всегда глобальные. Формальные переменные – это параметры в заголовке функции пользователя; область их действия – блок, являющийся телом функции. Глобальные параметры также доступны в теле функции. В языке Си каждая переменная принадлежит к одному из четырех классов памяти – автоматическая или локальная (auto), внешняя или глобальная (extern), статическая (static), регистровая (register). Тип памяти указывается одним из приведенных ключевых слов, стоящим перед указанием типа переменной: register int a. Если класс памяти для переменной не указан, она относится к классу auto. Автоматические переменные по отношению к функциям являются внутренними, или локальными. Они начинают существовать при входе в функцию и уничтожаются при выходе из нее. Статические переменные могут быть внутренними или внешними. Внутренние статические переменные локальны по отношению к отдельной функции, но продолжают существовать в промежутках между ее вызовами. Внешние статические переменные доступны внутри файла, в котором они объявлены, и доступны для всех его функций. Значения регистровых переменных- помещаются во внутренние регистры процессора с целью их интенсивного использования, для регистровых переменных допустимы два типа: int, char. В языке Си аргументы при стандартном вызове функции передаются по значению, т.е. в функцию передаются не оригиналы аргументов, а их копии, поэтому нет прямого способа в вызванной функции изменять значения переменных, указанных как фактические аргументы при обращении к данной функции. Однако это возможно сделать, передавая в функцию не переменные, а их адреса. В случае необходимости, функцию можно использовать для изменения передаваемых ей аргументов. В этом случае в качестве аргумента необходимо в вызываемую функцию передавать не значение переменной, а ее адрес. А для обращения к значению аргумента-оригинала использовать операцию «*». Пример функции, в которой меняются местами значения аргументов x и y: void swap(int *x, int*y) /* x и y – указатели */ { int t; t=*x; *x = *y; *y=t; /* здесь(*x) и (*y) – значения, на которые указывают указатели */ } Фрагмент кода с обращением к данной функции: #include <stdio.h> main (void) void swap(int*, int*); /* описание прототипа */ int a, b; puts(“enter a,b->”); scanf(“%d%d”,&a,&b); printf(“\n a=%d, b=%d\n”, a, b); swap(&a, &b); /* обращение к функции */ printf(“\n a=%d, b=%d”, a, b); } При таком способе передачи в вызываемую функцию аргументов их первоначальные значения теперь будут изменены: Когда функция вызывает себя, она называется рекурсивной. Пример рекурсивной функции – вычисление факториала числа n!=1*2*3*…*n: int fac(int n) { int b; if (n= =1) return 1; b=fac(n-1)*n; return n; }
Особое место среди подпрограмм занимают библиотечные функции, разработанные заранее и помещенные в файлы с расширением LIB. Для вызова любой такой функции в программе достаточно указать ее имя со списком параметров в круглых скобках, при необходимости явно изменив возвращаемый тип. Пример работы с функцией пользователя Листинг 11. Ввести массив NxN целых чисел; и в функции посчитать сумму его положительных элементов через обращение к функции /*_______________________________________*/ #include <stdio.h> #include <conio.h> void sum(int, int b[ ][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]); } sum(N,a); } /* Обращение к функции */ } void sum(int n, int b[ ][50]) /* Описание функции sum */ { int i,j,s; puts("ФУНКЦИЯ "); for (s=0,i=0; i<n; i++) { for (j=0;j<n;j++) if (b[i][j]>0) s+=b[i][j]; printf("\a\n СУММА = %d, Press any key... ",s); getch(); }
Задача5. Варианты
Значение аргумента x меняется от a до b с шагом h. Для каждого x найти значения функции Y(X), суммы S(x) (ее разложение в ряд c заданной точностью e=1.e-6) и вывести в виде таблицы. В основной программе организовать ввод исходных данных (a, b, h), обращение к функции, вывод результатов. Вычисления Y(x), S(x) реализовать в виде функций. Указание: a b .
5.1. ,
5.2. ,
5.3. ,
5.4. ,
5.5.
5.6. ,
5.7. ,
5.8. ,
5.9. ,
5.10. , 5.11. ,
5.12. ,
5.13.Даны отрезки a,b,c,d. Для каждой тройки этих отрезков, из которых можно построить треугольник, вычислить площади треугольников по формуле , где (x,y,z – стороны). 5.14.Дано натуральное число N. Определить, если это возможно, пару натуральных чисел x, y, таких что .
5.15. Дано натуральное число N (N £ 99). Выяснить, верно ли, что N2 равно кубу суммы цифр числа N.
5.16. Натуральное число из n цифр является числом Армстронга, если сумма его цифр, возведенных в n-ю степень, равна самому числу (как, например, 153=13+53+33 ). Получить все числа Армстронга, состоящие из двух, трех и четырех цифр
5.17. Дано натуральное число N. Удалить из записи числа N цифры 0 и 5, оставив прежним порядок остальных цифр (например, из числа 59015509 получить число 919).
5.18. Дана строка символов. Выделить в ней все цифры, записать в массив. 5.19. Дана строка символов. Выделить в ней все строчные буквы латинского алфавита, записать в массив. 5.20. Задана целочисленная матрица A(N,M). Определить номер столбца (столбцов), содержащего только положительные элементы. При отсутствии такого столбца вывести сообщение.
|
||||
Последнее изменение этой страницы: 2016-12-17; просмотров: 237; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.222.111.44 (0.006 с.) |