Date Редакция Категория comp Теги C

Программа на 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