Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

c++ / L_2

.doc
Скачиваний:
105
Добавлен:
02.04.2015
Размер:
78.85 Кб
Скачать

Операции языка С

Арифметические операции

Операция

Пояснение

-

Вычитание и унарный минус

+

Сложение

*

Умножение

/

Деление

%

Деление по модулю 2 дает остаток от целочисленного деления 5%2=1

++

Увеличение на 1 (префиксная и постфиксная формы)

--

Уменьшение на 1 (префиксная и постфиксная формы)

Различие префиксной и постфиксной формы

++X

Префиксная

форма

Переменная X вначале увеличивается на 1, а затем ее значение используется в выражении

X++

Постфиксная

форма

Значение переменной X сначала используется в выражении, а затем ее значение увеличивается на 1

Преобразование типа

(тип) переменная

float a=10.45;

int b;

b=(int) a; // Результат 10;

Приведение типов рассматривается как унарный оператор

Старшинство арифметических операций:

++, --

  • унарный минус

*, /, %

+, -

Пример

#include <stdio.h>

#include <conio.h>

//---------------------------------------------------------------------------

void main()

{

int x=10; int y=50;

float z=15.25;

printf("x=%d y=%d\n",x,y); // x=10 y=50

x++; // постфиксная форма

++y; // префиксная форма

printf("x=%d y=%d\n",x,y); // x=11 y=51

printf("x=%d y=%d\n",x++,++y); // x=11 y=52 , после вывода на экран x=12

printf("x=%d y=%d\n",x--,--y); // x=12 y=51, после вывода на экран x=11

x=(int) z; // преобразование вещественного числа к целому

printf("x=%d\n",x); // x=15

x=(int)z%2; //остаток от целочисленного деления x=1

printf("x=%d\n",x);

getch();

}

Операция многократного присваивания

a=b=c=x*y;

Комбинированные (или сокращённые) формы операторов присваивания

*=

A *= B

Операция присвоения произведения.

A = A * B

/=

A /= B + 254

Операция присвоения частного от деления

A=A / (B + 254)

+=

A += B

Операция присвоения суммы

А=A+B

-=

A -= B

Операция присвоения разности

А=A-B

%=

A %= B

Операция присвоения остатка от деления (для целых чисел)

A = A %B

Операции отношения и логические операции

Операция

Назначение

<

меньше

<=

меньше или равно

>

больше

>=

больше или равно

= =

равно

!=

не равно

&&

И

||

ИЛИ

!

НЕ

Операции отношения и логические операции имеют приоритет ниже, чем арифметические операции

12>10+1 эквивалентно 12>(10+1)

Старшинство логических операций и операций отношения:

!

< > >= <=

== !=

&&

||

Управляющие операторы

Операции отношения используются для сравнения в управляющих операторах:

if (a<b && (a>d || a= =0))

b++; // обратите внимание на ;

else

{b=7; a=0};

Результатом логического выражения является целочисленное арифметическое значение.

“Истинно” – это ненулевое значение

“Ложно” - это 0

Общий вид условного оператора

if (условие)

{

… // операторы выполняются, если условие истинно

}

else

{

…// операторы выполняются, если условие ложно

};

Вложенные операторы условия

if (условие1)

{

группа выражений1;

}

else

if (условие2)

{

группа выражений2;

}

else

{

группа выражений3;

};

Поразрядные операции

Поразрядные операция производятся только с любыми целочисленными переменными и константами и обеспечивают доступ к каждому биту информации.

Операция

Назначение

&

AND

|

OR

~

NOT

^

XOR – сложение по модулю 2

(исключающее ИЛИ)

<<

сдвиг влево

>>

сдвиг вправо

unsigned int k;

Пусть k = 0101 -> 01000001

число 0177 -> 01111111

Тогда k=k & 0177 01000001

число 0200 10000000

k=k | 0200 11000001

Пусть k = 0101 -> 01000001

число 0177 -> 01111111

Тогда k=k ^0177 00111110

x=9 00001001

x=9<<3 01001000

x=9>>3 00000001

Пусть k = 4 -> 00000100

Тогда k= ~k 11111011 –>-5 (%d)

Назначение: для организации хранения в сжатом виде информации о состоянии флагов (включен-выключен). В одном байте можно хранить 8 флагов.

Если переменная ch хранит флаги, то для проверки, находится ли флаг, содержащийся в третьем бите, в состоянии включен (1) надо использовать операцию &

if (ch&4) printf(“3 флаг включен”);

Комбинированные (или сокращённые) формы операторов присваивания

Обозначение

Операция присвоения результата:

<<=

A <<= B

операции побитового сдвига влево

A= A <<B

&=

A &= B

поразрядной конъюнкции

A = A & B

|=

A |= B

поразрядной дизъюнкции

A= A | B

^=

A ^= B

поразрядной исключающей дизъюнкции

A = A ^B

Задачи:

  1. Написать программу, которая проверяет, является ли год високосным.

  2. Написать программу вычисления сопротивления электрической цепи, состоящей из трех сопротивлений. Сопротивления могут быть соединены последовательно или параллельно.

  3. Написать программу, которая преобразует введенное с клавиатуры дробное число в денежный формат.

  4. Найти сумму цифр трехзначного числа, введенного с клавиатуры.

  5. Вычислить произведение высот треугольника со сторонами a, b, c.

Площадь

6.Треугольник задан координатами (x1, y1), (x2, y2), (x3, y3) своих вершин. Вычислить радиус окружности, вписанной в треугольник.

Вначале найти площадь по формуле Герона. Затем найти высоты. По высоте и одной стороне найти нужные углы. Центр окружности находится в точке пересечения бисcиктрисс . Составить два выражения и из них найти методом исключения x радиус.

  1. Ромб задан координатами трех вершин (x1, y1), (x2, y2), (x3, y3). Вычислить площадь и периметр ромба.

  2. Даны различные действительные числа x, y, z, d.

Найти max(max(x, y), max(x, z), max(z, d)).

  1. Даны три действительных числа. Определить, что больше, сумма или произведение этих чисел. Если сумма больше произведения на число меньшее единицы, то вывести 0, и противном случае вывести 1.

//---------------------------------------------------------------------------

#include <stdio.h>

#include <conio.h>

int a=10; //глобальная

int main()

{

int b;//локальная

extern int c; //с определена в другом месте

printf("1___a=%d\n",a);

a=1; // присвоение глобальной переменной

printf("2___a=%d\n",a);

int a; // присвоение локальной переменной

a=2;

printf("3___a=%d\n",a);

::a=3; // присвоение глобальной переменной

printf("4___a=%d\n",a);

printf("5___a=%d\n",::a);

getch();

return 0;

}

Соседние файлы в папке c++