- •Предисловие
- •Алфавит языка
- •Служебные слова
- •Константы
- •Комментарии
- •Переменные
- •Int I,j,k; //переменные I, j, k – целого типа
- •Математические функции
- •Выражения
- •Выражения целого типа
- •Примеры записи выражений целого типа:
- •Примеры вычислений выражений целого типа:
- •Выражения вещественного типа
- •Примеры записи выражений вещественного типа
- •Примеры вычислений выражений вещественного типа:
- •Операторы присваивания
- •Примеры записи операторов присваивания:
- •Ввод и вывод данных
- •Стандартный ввод-вывод
- •Посимвольный ввод-вывод
- •Ввод-вывод строк
- •Форматированный вывод
- •Форматированный ввод
- •Scanf(“формат”, аргументы);
- •Int age, rost;
- •Vasja Pupkin
- •Vasja Pupkin
- •Структура программы
- •Void main()
- •Int main()
- •Int age, rost;
- •Директивы препроцессора
- •Включение файлов
- •Int main()
- •Int age, rost;
- •Int main()
- •Int age, rost;
- •Подстановка имен
- •Макросы
- •Структуры данных
- •Массивы
- •Int vect[5];
- •Int vect[count];
- •Vect[0] vect[1] vect[2] vect[3] vect[4]
- •Int main()
- •Int temp;
- •Int matr[row][col];
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Int main()
- •Int c, y1, y2, kl, day, month, year;
- •Часто встречающиеся ошибки программирования:
- •Int main()
- •Переключатель
- •Int main()
- •Int month;
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Int main()
- •Программа
- •Int main()
- •Программа
- •Int main()
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Int main()
- •Int main()
- •Программа
- •Int main()
- •Int main()
- •Int main()
- •Int month;
- •Циклы с параметром
- •Действия цикла:
- •Int main()
- •Int top, bottom;
- •Int main()
- •Int num, sum, factor;
- •Int main()
- •Int main()
- •If (number % 3)
- •Int main()
- •Int main()
- •Int I, m, vector_min, vector_max, temp;
- •Int vector[n];
- •Int main()
- •Int vector_min, vector_max, temp;
- •Int vector[n];
- •Функции
- •Int summa(int a, int b)
- •Int summa(int a, int b)
- •Void swap(int a, int b)
- •Int temp;
- •Int top, bottom, temp;
- •Рекурсия
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Void quick_sort(int left, int right, int vector[])
- •Int I, last;
- •Void swap(int I, int j, int vector[])
- •Int temp;
- •Особенности рекурсии:
- •Адреса и указатели
- •Операции над указателями
- •Указатели и массивы
- •Int mass[5];
- •Int trio[5][2][3];
- •Указатели и функции
- •Int main()
- •Указатели и строки
- •Функции для работы со строками
- •Vtorokursnik
- •Vtorokursnik
- •Itoa(I, str, 16);
- •Текстовые файлы
- •Int vector[k];
- •Vector_1:
- •Vector_2:
- •Int ocenka;
- •Imja: Vasilij
- •Imja: Ivan
- •Int ocenka;
- •Бинарные файлы
Int main()
{
int s = 0;
for (int n=1; n<=100; n++) // n – локальная
s+=n; // переменная цикла
printf(“\ns=%d”, s);
return 0; }
Внимание! Параметр цикла, если он больше нигде, кроме этого цикла, не используется в программе, желательно описать как локальную переменную этого цикла внутри круглых скобок.
Этот же цикл можно организовать без тела цикла:
for (int n=1; n<=100; s+=n++);
Эту же задачу можно решить, суммируя числа справа налево, то есть от 100 до 1:
for (int n=100; n>=1; s+=n--);
Любая из трех составляющих (инициализация, условии, изменение) может отсутствовать, причем если отсутствует условие продолжения цикла, то считается, что оно всегда истинно, и цикл превращается в бесконечный:
for (;;);
Это бесконечный цикл. Точки с запятой в скобках должны обязательно присутствовать, даже если между ними ничего нет.
Циклы for в Си отличаются от аналогичных циклов в Паскале своей гибкостью и большими возможностями. Первая и третья составляющие в скобках не обязательно присваивают начальное значение параметру цикла и изменяют его после каждой итерации, а вторая составляющая не обязательно является условием продолжения цикла. Любая из этих составляющих может быть любым выражением или оператором целого или вещественного типов, строкой или функцией. Но вторая составляющая всегда понимается как условие, что бы она собой ни представляла:
for (puts(“Славное”); puts(“море -”); puts(“Байкал!”))
puts(“священный”);
На экран будет выведена бесконечная последовательность:
Славное
море -
священный
Байкал!
море -
священный
Байкал!
море -
священный
Байкал!
. . . . .
Условие выполнения цикла проверяется перед каждой итерацией, а приращение параметра цикла может быть переменным, поэтому, в отличие от Паскаля, в Си допускается изменение значения параметра цикла и условия продолжения цикла в теле этого же цикла. Может отсутствовать и сам оператор, выполняемый в цикле:
for (int count=0; getch()!=’\n’; count++);
Этот цикл подсчитывает количество вводимых с клавиатуры символов, пока не будет нажата клавиша ввода (она соответствует ESC-последовательности ‘\n’). В этом цикле параметр цикла count не входит в условие его выполнения - это тоже не обязательно.
В одном цикле for можно использовать одновременно несколько параметров цикла, которые при инициализации разделяются запятыми:
#define N 100
Int top, bottom;
char temp, string[N];
for (top=0, bottom = N-1; top<bottom; top++, bottom--)
{
temp=string[top];
string[top]=string[bottom];
string[bottom]=temp;
}
Эта программа переворачивает строку символов string[N] .
Как и в других языках программирования, в Си разрешено использовать цикл в цикле, при этом циклы должны иметь разные параметры цикла:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define MIN 6
#define MAX 10000