- •3. Правила формального описания синтаксиса языка программирования
- •5. Идентификаторы языка Си
- •6. Понятие функции. Стандартная функция printf.
- •7. Стандартная функция scanf
- •8. Простейшие арифметические операции.
- •9. Операция присваивания. Оператор - выражение.
- •10. Использование в выражениях операндов разных типов. Операция преобразования типов.
- •11. Стандартные математические функции.
- •12. Простейшие функции, определяемые программистом.
- •13. Дополнительные арифметические операции. Дополнительные операции присваивания.
- •14. Побитовые операции.
- •15. Операции отношения. Операция определения размера данных.
- •16. Приоритеты операций.
- •17. Понятие о препроцессоре языка Си: директива «include», директива «define».
- •18. Основные положения структурного программирования. Понятие оператора (statement). Пустой и составной операторы.
- •19. Условный оператор и условная операция.
- •20. Оператор цикла «while». Оператор прерывания цикла. Оператор продолжения цикла. Множественный выбор. Оператор переключения.
- •21. Оператор цикла «do-while».
- •22.Перечисления. Работа с клавиатурой ibm pc
- •23. Массивы. Описание массива.
- •24. Ввод-вывод массива
- •25. Инициализация массива
- •26. Программа вычисления длины строки символов
- •32. Двумерные массивы (массивы массивов)
- •32. Адресная арифметика языка Си
- •33. Указатели и одномерные массивы
- •34. Указатели и двумерные массивы
- •35. Указатели и функции
- •36. Оператор typedef
- •39. Области видимости и глобальные данные
- •40. Время жизни переменных и классы памяти языка Си
- •41. Передача аргументов в функцию
- •42. Возврат значений из функций
- •47. Общий случай двумерного массива.
- •48. Особенности работы с массивами большого размера
- •49. Описание структуры.
- •50. Трактовка имени структуры.
- •51. Доступ к элементу структуры.
- •52. Инициализация структур.
- •53. Структуры и функции.
- •54. Поля бит в структурах.
- •55. Объединения.
- •56. Динамические данные.
- •57. Линейные списки.
- •58. Организация данных в виде стека.
- •59. Организация данных в виде очереди.
- •60. Организация данных в виде деревьев.
23. Массивы. Описание массива.
Массив - это совокупность элементов данных одного и того же типа, объединенных общим именем и расположенных в непрерывной области памяти ЭВМ так, что к каждому элементу массива можно получить доступ, зная его порядковый номер или индекс.
Описание массива производится с помощью обычного оператора описания, при этом за именем массива в квадратных скобках должна быть записана целая положительная константа или константное выражение, равное размеру этого массива, то есть максимально возможному числу элементов. Имя массива без квадратных скобок за ним имеет значение, равное адресу первого элемента этого массива.
24. Ввод-вывод массива
Язык Си не имеет встроенных средств для ввода-вывода массива целиком, поэтому массив вводят и выводят поэлементно с помощью циклов, как, например, в следующей программе:
#include <stdio.h>
void main(void)
{
double a[100]; int n, i;
printf("Введите количество чисел n = ");
scanf("%d", &n);
if(n>(sizeof a) /sizeof(double))
{
printf("Слишком много элементов\n");
}
else
{
for(i=0; i<n; i++)
{
printf("a[%d]=", i); scanf("%lf", &a[i]);
}
………
25. Инициализация массива
Инициализация - присвоение значений вместе с описанием данных.
Для инициализации массива за его именем располагают знак присваивания и список инициализации, который представляет собой заключенные в фигурные скобки и разделенные запятыми инициализирующие значения. Ниже приведен пример инициализации массива:
int a[4] = { 15, 21, 1, 304 };
индексы элементов -> 0 1 2 3
26. Программа вычисления длины строки символов
Фрагмент вычисления длины строки можно оформить в виде отдельной функции и затем использовать в разных программах. Эта функция может выглядеть следующим образом:
int StrLen (char str[])
{
int len;
for(len=0; str[len]; len++);
return len;
}
32. Двумерные массивы (массивы массивов)
Двумерный массив удобно представить себе виде прямоугольной таблицы элементов; выделяют строки и столбцы.
Описание двумерного массива строится из описания одномерного путем добавления второй размерности, например:
int a[4][3];
В памяти ЭВМ двумернвй массив представляется как массив массивов т.е. каждый эемент такого массива является в свою очередь тоже массивом. В С описание происходит с помощью дополнительной пары квадратных скобок.
Имя двумерного массива без квадратных скобок за ним имеет значение адреса первого элемента этого массива, то есть значение адреса первой строки.
Имя двумерного массива с одним индексным выражением А[i] - значение адреса первого элемента этой строки.
Имя двумерного массива с двумя индексными выражениями
A[i][j] – значение j-го элемента i-ой строки.
Ввод двумерного массива осуществляется поэлементно с помощью двух вложенных циклов.
32. Адресная арифметика языка Си
1. К адресу можно прибавить целое число n результатом будет адрес элемента того же типа отстоящего на n позиций вправо от исходного элемента.
int *p, p1, a[100];
p=a;//пусть адрес 1000
p1=p+5;//p+N*R результат 1020
аналогично используется операция ++, +=.
2. Вычитание из адреса целого числа. Результатом является адрес того же типа элементa на n отстоящего влево от исходного.
3. Вычитание двух указателей разрешено. Результат - количество элементов.
4. умножение, сложение деление указателей запрещено.