- •Оглавление
- •Билет 1: Понятия о структурном программировании
- •Билет 2: Моделирование стандартных управляющих структур
- •Билет 3: структура программы
- •Билет 4: организация (структура) модуля
- •Билет 5: Переменные
- •Билет 6: Система типов языка
- •Билет 7: Арифметические типы языка c
- •Билет 8: Константы
- •Билет 9: КонстантныеобъектывязыкеСи.
- •Билет 10: Константные объекты
- •Билет 11. Переменные, понятие об объекте, lvalue и rvalue выражения.
- •Билет 12. Время жизни переменных.
- •Билет 15. Операторы. Приоритет и ассоциативность операторов.
- •Билет 19: Побочные эффекты в языке Си.
- •Билет 20: Организация функций. Определение функций
- •Билет 25: Инструкция If…else. Программирование разветвлений.
- •Билет 26: Инструкция switch и организация разветвленных алгоритмов.
- •Билет 27: Циклические алгоритмы, классификация, функциональная схема
- •Билет 28: Циклические инструкции.
- •Билет 29: инструкция for и арифметические циклы
- •Билет 30: Инструкция while и do...While, интерационные циклы
- •Билет 31: Циклы с выходом. Бесконечные циклы
- •Билет 32. Организация вложенных циклов
- •Билет 33: Массивы. Определение и инициализация одномерных массивов
- •Билет 34. Массивы. Определение и инициализация двумерных массивов
- •Билет 35. Связь указателей и массивов
- •Билет 40. Указатели. Определение типизированных и нетипизированых указателей. Модель, используемая при работе с указателями. Операции с указателями.
- •Билет 41: Операции с указателями
- •Билет 42. Использование указателей для возврата из функции через параметры
- •Билет 43. Указатели на функцию. Определение. Операции. Использование в параметрах функции
- •Билет 44. Типичные ошибки при работе с массивами
- •Билет 45. Массив указателей, динамическая матрица
- •Билет 46. Понятие некорректного указателя.
- •Билет 47. Организация строк. Общие сведения
- •Билет 48. Ввод/вывод строк
- •Void funk(“Kozin”); - при этом ничего не возвращается. Данная запись используется довольно редко.
- •Билет 52. Организация динамического одномерного массива
- •Билет 53. Структуры. Определение типа структур. Определение переменных в структуре и инициализация. Операции со структурой
- •Билет 54. Обращение к полям структуры. Массивы структур
- •Билет 55. Использование структур при работе с функциями. Указатели на структуры
- •Билет 58: Файловый ввод-вывод. Символьный ввод-вывод в языке Си.
- •Синтаксис преобразования вывода
- •Билет 60: Файловый ввод-вывод. Строковый ввод-вывод в языке Си.
- •Билет 61: Файловый ввод-вывод. Блоковый ввод-вывод в языке Си.
- •Int fseek(file *f, long int колич_байт, int начало_отсчета);
Билет 32. Организация вложенных циклов
В теле одного цикла (далее он будет называться внешним) можно организовать другой цикл (который будет называться вложенным или внутренним). Итак, вложенный цикл – это цикл, находящийся в теле другого. Притом во внутреннем цикле можно организовать ещё один (вложенный цикл второго уровня) и так далее, степень вложенности в С в принципе не ограничена, только вот разобраться с циклом со степенью вложенности 50 будет трудновато, поэтому такие огромные как правило избегают (с помощью того же switch).
Итерация – проход по циклу. Чтобы узнать, сколько будет проходов по данному циклу, необходимо умножить количество его итераций на количество итераций внешних циклов (внешних относительно данного). Такое можно сделать только зная точное количество проходов, притом в циклах for вычисляем количество по параметрам. Например взяв три вложенных друг в друга цикла, каждый по 10 итераций, получим 10 исполнений тела для внешнего цикла, 100 для цикла второго уровня и 1000 в самом внутреннем цикле.
// Внешний цикл
for(i=1;i<10;i++)
{
// Внутренний цикл
for(j=1;j<5;j++)
{
printf("%d * %d = %d", i, j, i*j);
printf("\n");
}
printf("\n");
}
Билет 33: Массивы. Определение и инициализация одномерных массивов
Массивом называется упорядоченная совокупность однотипных величин, объединенных одним именем.Упорядоченность заключается в том, что за каждым элементом закрепляется индекс (номер по порядку, начиная с нуля).Следовательно, массивы нужны, чтобы работать с однотипными упорядоченными элементами.Массивы в С всегда начинаются с нуля.Если возникает необходимость работать с массивом, начинающимся с 1, то либо игнорируем нулевой элемент (что не очень красиво, т.к. остается выделенная незадействованная память), либо учитываем, что нумерация массива на 1 меньше, чем действительная.
У элемента массива может быть несколько индексов (в случае много мерных массивов, к примеру, для элементов двумерного массива два индекса).Одномерный массив нестрого соответствует вектору в математике, двумерный — матрице.Чаще всего применяются массивы с одним или двумя индексами, реже — с тремя, ещё большее количество индексов встречается крайне редко.
Достоинства применения массивов
легкость вычисления адреса элемента по его индексу (поскольку элементы массива располагаются один за другим)
одинаковое время доступа ко всем элементам
элементы объединены одним именем и находятся в одном месте: не потеряются =)
Недостатки
при работе с массивом в стиле C (с указателями) и при отсутствии дополнительных средств контроля — угроза выхода за границы массива и повреждения данных
Определение одномерного массива:
Общая структура объявления: <a><b>, где а – последовательность спецификаций (класс памяти (static, extern), тип (const) и другие спецификаторы (int, double), притом идут именно в такой последовательности), b – список описателей (имя, *, [])
double ar[10]; - Определение одномерного массива, элементы которого имеют тип double, на 10 элементов (т.е. от 0 до 9). Скобки могут быть пустыми (только в стандарте С99), тогда размеры не определены.Вместо пустых скобок можно перед именем поставить *, записи будут эквивалентны, однако как правило с помощью * определяются строки (одномерные массивы символов) и определять * обычные массивы потому не очень красиво.
Инициализация одномерных массивов:
int Ar1[5]={2,4}; - при этом нулевой элемент будет содержать 2, первый – 4, а остальное – нули.
double Ar2[5]={1.5,3,5.7,7,9}; - все элементы инициализированы числами типа double
a[2]=i; - В этом случае инициализируется только 1 элемент массива, в остальных мусор (если был объявлен с помощью индексных скобок, если объявлен *, то все элементы по умолчанию нули). Чтобы проинициализировать таким образом весь массив, необходимо организовать цикл: for(i=0;i<5;i++)a[i]=i;
*Ar1=3; - как мы помним, имя массива – указатель на нулевой элемент. В данном случае нулевой элемент содержит 3, а остальные – нули.
!Имя массива является указателем на его первый элемент.
!Средством доступа к элементам является оператор – [] – индексные скобки.