Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КОНТРОЛЬНАЯ_РАБОТА_Лабораторный практикум Алгор...doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
521.22 Кб
Скачать

Лабораторная работа № 1

Дисциплина: Языки программирования

Тема: Управляющие конструкции языка Си

Цель: Изучить основные управляющие конструкции языка Си, уметь выполнять все арифметические действия над числами

Краткая теория

Задачи, рассматриваемые в этой работе, выполняют арифметические действия над числами. В качестве входных данных они могут использовать как действительные числа (по умолчанию), так и целые (тип указывается явно).

В формулировках условий используются следующие специальные обозначения:

  •  - знак суммы

запись вида - это краткая запись выражения:

(1+12)+(2+22)+(3+32)+(4+42)+(5+52)

  •  - знак произведения

запись вида - это краткая запись выражения:

  • - фигурная скобка, объединяет несколько вариантов, каждый из которых может быть выполнен только в случае, если истинно записанное через запятую условие, например:

Таким образом, первый вариант будет выполнен, если некоторое а окажется большим 0, а второй вариант - в противном случае.

Под знаком суммы или произведения могут находиться арифметические выражения, которые в свою очередь содержат в себе знаки  и . Например:

; .

1.

Даны числа a и b. Получить значение K по формуле:

K =

В качестве входных данных фигурируют некоторые переменные a и b, о типе которых нет никаких указаний. Поэтому выберем более общий тип - float. Результатом программы будет значение арифметического выражения с участием переменных a и b, следовательно, результирующая переменная также будет иметь тип float.

Программа будет составлена из следующих шагов:

  1. ввод значений переменных a и b.

  2. проверка на истинность условия a>b.

2.1.вычисление выражения , если условие истинно.

2.2.вычисление выражения , в противном случае.

  1. вывод результата.

Разберем эти действия детально:

  1. для сообщения пользователю о том, что сейчас необходимо ввести, используется функция printf, описанная в файле stdio.h.

printf("\n введите a и b\n");

форматированный ввод осуществляется функцией scanf, описанной в stdio.h. Действительные числа при этом вводятся с помощью формата %f, введенное значение размещаются по адресу переменной.

scanf("%f %f",&a, &b);

  1. используется конструкция

if (a>b)

реализация п. 2.1.

else

реализация п.2.2.

2.1. выражение отображает сумму четырех слагаемых вида (a*i+b*i2) со значениями i, меняющимися от 1 до 4. Это можно записать так:

0 +(a*1+b*12)+(a*2+b*22)+(a*3+b*32)+(a*4+b*42)

Такое выражение может быть реализовано с помощью конструкции цикла for. В качестве переменной цикла выступит переменная i, пробегающая от 1 до 4, и следовательно, имеющая тип int. На каждой итерации к значению суммы, первоначально равному 0, прибавляется очередное слагаемое, что будет выглядеть вот так:

k=0;

for(i=1;i<=4;i++)

k+=a*i+b*i*i;

2.2. выражение - есть произведение трех сомножителей вида , где i меняется от 1 до 3, и может быть представлено в следующем виде:

Такое выражение также может быть вычислено с помощью цикла, где на каждом шаге к первоначальному значению произведения, равному 1, домножается очередная дробь.

k=1;

for(i=1i<=3;i++)

k*=(a+i)/b*i;

  1. результатом будет некоторое значение типа float, которое можно вывести функцией printf с форматной строкой %f :

printf("\n k=%f",k);

Окончательно программа примет следующий вид:

#include<stdio.h>

main()

{

float a,b; // входные данные

float k; // результат

int i; // внутренние переменные

printf("\n введите a и b\n");

scanf("%f %f",&a, &b);

if (a>b)

{

k=0;

for(i=1;i<=4;i++)

k+=a*i+b*i*i;

}

else

{

k=1;

for(i=1i<=3;i++)

k*=(a+i)/b*i;

}

printf("\n k=%f",k);

}

2.

Вычислить значение:

K =

В данной задаче все входные данные четко указаны в условии, поэтому дополнительно ничего вводить не требуется. Результатом будет некоторое значение типа int, поскольку операнды выражения имеют тип int и над ними производятся только операции сложения и умножения.

Решение задачи сводится к вычислению суммы, где каждое слагаемое само представляет произведение, и требует предварительного вычисления. Для временного хранения значения очередного слагаемого введем дополнительную переменную p, которая также имеет тип int.

Вычисление суммы выглядит так:

k=0;

for(i=1;i<=3;i++)

{

вычисление очередного слагаемого p

k+=p;

}

p - есть значение произведения и вычисляется так:

p=1;

for(j=1;j<=5;j++)

p*=i*j*j+i;

Программа будет иметь следующий вид:

#include<stdio.h>

main()

{

int k; // результат

int p,i,j; // дополнительные переменные

k=0;

for(i=1;i<=3;i++)

{

p=1;

for(j=1;j<=5;j++)

p*=i*j*j+i;

k+=p;

}

printf("\n результат k=%d",k);

}