Программа на C имеет следующую структуру:
#include ...
#define ...
Объявления глобальных переменных
Объявления функций
void main ()
{
Объявления локальных переменных
операторы
}
Индекс массива начинается с 0. Таким образом, в массиве из десяти элементов индекс изменяется от 0 до 9.
В функции printf
новая строка указывается с помощью '\n'
(обратный слеш с последующей строчной N
).
Идентификаторы
Последовательность латинских букв и цифр, начинающаяся с буквы или знака подчеркивания ‘_’; зависит от регистра.
Комментарии
/* Это комментарий */
Типы данных
int
long int
long
short int
char
float
double
Объявление переменных
тип_данных список_переменных;
int i;
char c;
float x, y;
Присваивание
имя = значение;
i = 2;
c = 'a';
x = x + 2 * y;
Основная программа
void main ()
{
int i, j;
i = 1;
j = 3;
i = i + j;
}
Блок операторов
{
оператор_1;
. . .
оператор_n;
}
Арифметические операции
Сложение +
Вычитание -
Умножение *
Деление /
Деление по модулю %
Инкремент ++
Декремент --
Унарный + +
Унарный - -
Логические операции
Меньше <
Меньше или равно <=
Больше >
Больше или равно >=
Равно ==
Не равно !=
Логическое И &&
Логическое ИЛИ ||
Логическое НЕТ !
Форматированный ввод
scanf(строка_форматов, список_адресов_переменных);
scanf("%d", &intvar);
scanf("%4d%4.1f", &intvar, &floatvar);
Форматированный вывод
printf(строка_форматов_и_текст, список_переменных);
printf("Integer i is: %d\n", i);
printf("Float f is: %f\n", f);
Условный оператор if
if (условие)
оператор_если_условие_истинно;
if (x < 1)
y = 2;
if ( (x == 0) && (y != 0) )
{
y = 2;
x++;
}
if (условие)
оператор_если_условие_истинно;
else
оператор_если_условие_ложно;
if (x < 1)
y = 2;
else
y = 3;
Оператор цикла while
while (условие)
операторы;
while (x < 1)
x++;
while (x < 1)
{
x++;
}
Оператор цикла do…while
do
операторы;
while (условие);
do
x++;
y += x;
while (x <= 0);
Оператор цикла for
for (выражение1; выражение2; выражение3)
операторы;
for (i=1; 1<=10; i++)
printf ("%d", i);
Оператор выбора case
switch (выражение)
{
case m1: операторы l;
break;
case m2: операторы 2;
break;
. . .
case mn: операторы n;
break;
. . .
default: операторы;
break;
}
switch (c = getchar())
{
case 'a':
case 'b':
case 'c': putchar ('1');
break;
case 'd': putchar ('2');
break;
default : putchar ('3');
}
Чтение из файла
FILE *fin; /* идентификатор файла */
int m1k, m1r;
/* открыть файл ввода */
if ((fin=fopen("nameOfFile", "r")) == NULL) {
printf ("File not opened!\n");
return (1);
}
/* прочитать данные из файла */
fscanf(fin, "%d%d", &m1k, &m1r);
/* закрыть файл ввода */
fclose(fin);
Запись в файл
FILE *fout; /* идентификатор файла */
int m1k, m1r;
float v1k, v1r;
/* открыть файл вывода */
if ((fout=fopen("nameOfFile", "w")) == NULL) {
printf ("File not opened!\n");
return (1);
}
/* записать данные в файл */
fprintf (fout, "%8d%8d", m1k, m1r);
fprintf (fout, "%8.2f%8.2f", v1k, v1r);
/* закрыть файл вывода */
fclose (fout);
Проверка конца строки
while ((c = getchar()) != '\n')
оператор;
Проверка конца файла
while ((c = getchar()) != EOF)
оператор;
Определение функции
int max(int a, b)
{
return (a>b ? a : b);
}
void test ()
{
int i;
i = 2;
. . .
}
Объявление указателя
тип_данных *имя;
int *pointerToInt;
int normalInt;
normalInt = 33;
*pointerToInt = normalInt;
printf ("Int value = %d\n", *pointerToInt);
Разыменование указателя
*указатель
Тип данных указатель
typedef int * pint;
pint p;
Нулевой указатель
NULL
Резервирование памяти
тип_данных *имя;
имя = (тип_данных*) malloc (sizeof(тип_данных));
Освобождение памяти
free ((тип_данных*)имя);
Массив
тип_данных имя[размер];
Тип данных массив
typedef тип_данных новое_имя[размер];
typedef int VEC5[5];
typedef int VEC3[3];
typedef float FVEC[10];
VEC5 v5;
VEC3 v3;
FVEC f;
Двумерный массив
тип_данных имя[размер1][размер2];
int x[2][3];
/* динамическое размещение матрицы в памяти */
int **ptrToMat;
int k, r; /* переменные циклов */
int K = 5; /* число столбцов */
int R = 6; /* число строк */
/* резервировать место под строки */
ptrToMat = (int **) malloc(R*sizeof(int));
/* резервировать место под столбцы */
for (r=0; r<R; r++);
ptrToMat[r] = (int *) malloc(K*sizeof(int));
/* заполнить матрицы построчно */
for (r=0; r<R; r++);
for (k=0; k<K; k++);
ptrToMat[r][k] = r*k;
Тип данных двумерный массив
тип_данных имя[размер1][размер2];
typedef int TWO[3][4];
typedef int SINGLE[5];
typedef SINGLE TWO[4];
(:cellnr:) Структура (:cell:)
struct
{ поля;
} имя;
struct
{ int i;
float f;
} a;
Тип данных на основе структуры
typedef struct type
{ поля;
} тип;
typedef struct student
{ char name[30];
int StudNum;
} STUDENT;
typedef STUDENT CLASS[100];
CLASS Stats;
Доступ полям структуры с помощью указателя
указатель_на структуру -> поле
Комментарии
comments powered by Disqus