Конструкции структурного программирования в Си

Содержание

Слайд 2

Пример



int m = 12, n = 18;
if (m

Пример … … int m = 12, n = 18; if (m

printf (“Сумма чисел %d”, m+n);
else printf (“Произведение чисел %d”, m*n);


Слайд 3

Пример сложного условия


int x = 5, y = 7, z = 3;
int

Пример сложного условия … int x = 5, y = 7, z
min;
if (x min = x;
else if (y min = y;
else min = z;

Слайд 4

Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит

Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит
8. По введенным координатам двух полей выясните, одного ли цвета эти поля.

Черные клетки – нечетные строки и нечетные столбцы или четные строки и четные столбцы
Белые клетки – нечетные строки и четные столбцы или четные строки и нечетные столбцы
Тогда для черных клеток сумма строки и столбца всегда четная, а для белых клеток – всегда нечетная.

Слайд 5

#include
#include
int main(int argc, char *argv[]) {
system("chcp 1251");
int x,y,x1,y1, a,b;
printf(“Введите номер

#include #include int main(int argc, char *argv[]) { system("chcp 1251"); int x,y,x1,y1,
столбца и номер строки первой клетки: ");
scanf("%d%d",&x,&y);
printf("Введите номер столбца и номер строки второй клетки: ");
scanf("%d%d",&x1,&y1);
a = x + y;
b = x1 + y1;
a = a+b;
if (a%2==0) printf(“Клетки одного цвета\n");
else printf(“Клетки разных цветов\n");
system("pause");
return 0;
}

Слайд 6

Даны вещественные положительные числа a, b, c. Определите, существует ли треугольник со

Даны вещественные положительные числа a, b, c. Определите, существует ли треугольник со
сторонами a, b, c и если да, то определите, является ли он прямоугольным.

треугольник

a, b, c

a+b>c
Не

Нет

a+с>b

Нет

Да

b+c>a

Нет

Да

1

2

Да

Слайд 7

2

a2+b2 = c2

Да

b2+c2 = a2

Да

Нет

a2+c2 = b2

Да

Нет
Не

1

Нет

1

конец

2 a2+b2 = c2 Да b2+c2 = a2 Да Нет a2+c2 =

Слайд 8

int main(int argc, char *argv[]) {
system("chcp 1251");
float a,b,c;
printf("Введите три стороны треугольника: ");
scanf("%f%f%f",&a,&b,&c);
if

int main(int argc, char *argv[]) { system("chcp 1251"); float a,b,c; printf("Введите три
(a+b>c&&a+c>b&&c+b>a)
if (a*a+b*b==c*c||a*a+c*c==b*b||c*c+b*b==a*a)
printf("Прямоугольный треугольник\n");
else printf("Не прямоугольный треугольник\n");
else
printf ("Отрезки не могут образовать
треугольник\n ");
system("pause");
return 0;
}

Слайд 9

Даны три числа x,y,z. Найдите
a=max(x,y)-min2(x2,y-z)+43

формула

x, y, z

x

Нет

Да

max=x

max=y

1

Даны три числа x,y,z. Найдите a=max(x,y)-min2(x2,y-z)+43 формула x, y, z x Нет
x*x

Нет

Да

min=x*x

min=y-z

1

a=max-min*min + 43

Слайд 10

int main(int argc, char *argv[]) {
system("chcp 1251");
float x,y,z,max,min;
float a;
printf("Введите x,y,z: ");
scanf("%f%f%f",&x,&y,&z);
if (x

int main(int argc, char *argv[]) { system("chcp 1251"); float x,y,z,max,min; float a;
max = y; else max = x;
if (x*x<(y-z)) min = x*x; else min = y-z;
a = max - min*min +43;
printf("Значение а = %.3f\n",a);
system("pause");
return 0;
}

Слайд 11

Известны площади круга и квадрата. Определить:
уместится ли круг в квадрате
уместится ли квадрат

Известны площади круга и квадрата. Определить: уместится ли круг в квадрате уместится
в круге

D

Sкруга=πr2 = πD2/4

a

Sквадрата=a2

D2 = 2a2

D2 = 2 Sквадрата

D2 = 4Sкруга /π

4Sкруга /π >= 2 Sквадрата

Слайд 12

D

a

4Sкруга /π <= Sквадрата

D a 4Sкруга /π

Слайд 13

int main(int argc, char *argv[]) {
system("chcp 1251");
printf("Введите площадь круга и квадрата: ");
float

int main(int argc, char *argv[]) { system("chcp 1251"); printf("Введите площадь круга и
circle, quadro;
scanf("%f%f",&circle,&quadro);
if(4*circle/M_PI>=2*quadro)
printf("Квадрат помещается в круге\n");
else
printf ("Квадрат не помещается в круге\n");
if (4*circle/M_PI<=quadro)
printf("Круг помещается в квадрате\n");
else
printf ("Круг не помещается в квадрате\n");
system("pause"); return 0;}

Слайд 14

#include
#include
/* Дано двузначное число. Определить: входит ли в него цифра

#include #include /* Дано двузначное число. Определить: входит ли в него цифра
3
*/
int main(int argc, char *argv[]) {
system("chcp 1251");
printf("Введите двузначное число: ");
int x,y,flag = 0;
scanf("%d",&x);
y = x%10;
if (y==3) flag++;
x = x-y;
if (x==30) flag++;
if (flag) printf("В числе есть цифра 3\n");
else printf("В числе нет цифры 3\n");
system("pause");
return 0;
}

Слайд 15

#include
#include
/* Определить количество дней в году, который вводит пользователь. В

#include #include /* Определить количество дней в году, который вводит пользователь. В
високосном годе - 366 дней, тогда как в обычном 365. Високосными годами являются все года делящиеся нацело на 4 за исключением столетий, которые делятся нацело на 400. */
int main(int argc, char *argv[]) {
system("chcp 1251");
printf("Введите год: ");
int year;
scanf("%d",&year);
if (year%4==0&&year%100!=0)
printf("В %d году 366 дней (високосный)\n",year);
else if (year%100==0&&year%400!=0)
printf("В %d году 366 дней (високосный)\n",year);
else printf("В %d году 365 дней (не високосный)\n", year);
return 0;
}

Слайд 16

4.2. Множественный выбор

Синтаксис: switch (выражение)
{
case значение выражения1: операторы;
case значение выражения2: операторы;

[default:

4.2. Множественный выбор Синтаксис: switch (выражение) { case значение выражения1: операторы; case
операторы;]
}

Выражение в switch
int, long int, char, … целочисленные типы

Слайд 17

Принцип работы switch
значение выражения сравнивается со значением, указанным в первом блоке

Принцип работы switch значение выражения сравнивается со значением, указанным в первом блоке
case
если значения совпали, выполняются операторы из первого блока case
управление без проверки условия передается в последующие блоки case
если case заканчивается оператором break, управление передается на оператор, следующий за блоком switch

Слайд 18

Принцип работы switch
если совпадения значений не произошло, последовательно проверяются все следующие

Принцип работы switch если совпадения значений не произошло, последовательно проверяются все следующие
case
в блок default управление передается в случае, если не произошло ни одного совпадения значений
для определения диапазонов используется перечисление case:
case a: case b: case c: …

Слайд 19

int k;
printf(“Введите произвольное целое число: ");
scanf("%d",&k);
switch (k)
{

int k; printf(“Введите произвольное целое число: "); scanf("%d",&k); switch (k) { case
case 1:case 2: case 3:
printf(“Введено число 1 или 2 или 3\n");
break;
case 4:
printf(“Введено число 4\n");
case 6:
printf(“ Введено число 6\n");
break;
default:
printf(“ Управление передано в блок DEFAULT \n");
}

Слайд 20

Результаты работы

Результаты работы

Слайд 21

С клавиатуры вводятся три числа DD MM YYYY, обозначающие день, месяц и

С клавиатуры вводятся три числа DD MM YYYY, обозначающие день, месяц и
год. Проверить корректность введенной даты.

int main(int argc, char *argv[]) {
system("chcp 1251");
int dd,mm, yy, f = 0;
printf("Вводите день, месяц, год: ");
scanf("%d%d%d", &dd,&mm,&yy);
if (dd>31||mm>12) f = 1;
else {
switch (mm) {
case 1: if (dd>31) f=1; break;
case 2: if (yy%4==0&&yy%100!=0||yy%100==0&&yy%400==0)
{if (dd>29) f=1; }
else if (dd>28) f=1; break;

Слайд 22


case 3: if (dd>31) f=1; break;
case 4: if (dd>30) f=1;

case 3: if (dd>31) f=1; break; case 4: if (dd>30) f=1; break;
break;
case 5: if (dd>31) f=1; break;
case 6: if (dd>30) f=1; break;
case 7: if (dd>31) f=1; break;
case 8: if (dd>31) f=1; break;
case 9: if (dd>30) f=1;break;
case 10: if (dd>31) f=1;break;
case 11: if (dd>30) f=1;break;
case 12: if (dd>31) f=1;break;
default: f=0;
}
}
if (f) printf("Введенная дата некорректна\n");
system("pause");
return 0;
}

Слайд 23

АЛГОРИТМ РАЗБИЕНИЯ ЧИСЛА НА ЦИФРЫ

1567 % 10 = 7 (получение остатка от

АЛГОРИТМ РАЗБИЕНИЯ ЧИСЛА НА ЦИФРЫ 1567 % 10 = 7 (получение остатка
деления)
1567 / 10 = 156 (деление на 10 нацело)
156 % 10 = 6 (получение остатка от деления)
156 / 10 = 15 (деление на 10 нацело)
15 % 10 = 5 (получение остатка от деления)
15 / 10 = 1 (деление на 10 нацело)
1 % 10 = 1(получение остатка от деления)
1 / 10 = 0 (деление на 10 нацело)

Слайд 24

4.3. Циклы

4.3.1. Цикл с фиксированным числом операций for

Цикл, это конструкция структурного

4.3. Циклы 4.3.1. Цикл с фиксированным числом операций for Цикл, это конструкция
программирования, повторяющая определенные действия (итерации) несколько раз.

Синтаксис:
for (секция инициализации значения; секция проверки условия; секция коррекции) {тело цикла}

Слайд 25

Алгоритмы суммы и произведения

7

0

+

=

17

6

+

+

4

S:=0
для i от 1 до n
ввод k;
S:=S+k;
кц
рез

Алгоритмы суммы и произведения 7 0 + = 17 6 + +
S.

Слайд 26

S:=1
для i от 1 до n
ввод k;
S:=S*k;
кц
рез S.

Алгоритм произведения

S:=1 для i от 1 до n ввод k; S:=S*k; кц рез S. Алгоритм произведения

Слайд 27

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов

Сумма нечетных

Дана последовательность из n произвольных чисел. Найти сумму нечетных элементов Сумма нечетных
i < n

Нет

Да

i=i+1

Нет

Да

i =0, S=0

S=S+a

a

a% 2 =1

S

Конец

Слайд 28

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента

Максимум

Да

a

Дана последовательность из n произвольных чисел. Найти значение самого большого элемента Максимум
a>max

L1
i

i =1

a

max=a

1

1

max=a

i =i+1

L1

S

Конец

Нет

Имя файла: Конструкции-структурного-программирования-в-Си.pptx
Количество просмотров: 44
Количество скачиваний: 0