Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1, №2 и №3.pdf
Скачиваний:
50
Добавлен:
11.02.2015
Размер:
1.67 Mб
Скачать

Основы создания программ в Си

Page 30 of 68

 

 

 

Сколько будет 6x7 ?

Введите ответ и нажмите <Enter>

-> 46

Вы ошиблись. 6x7=42

18.Написать программу, которая проверяет, является ли введенное пользователем целое число четным. Ниже приведен рекомендуемый вид экрана программы (данные, введенные

пользователем, выделены полужирным).

Введите целое число и нажмите <Enter>

-> 23

Число 23 - нечетное.

19.Написать программу, которая проверяет, делится ли на три введенное с клавиатуры целое число. Ниже приведен рекомен-1 дуемый вид экрана программы (данные, введенные

пользовате-1 лем, выделены полужирным).

Введите целое число и нажмите <Entner> -> 451

451 на три не делится

-■•

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

вид экрана программы (данные, введенные пользователем, выделены полужирным).

Вычисление стоимости разговора по телефону Введите исходные данные:

Длительность разговора (целое количество минут) -> 3

День недели (1 - понедельник, ... 7 - воскресенье) -> 6

Предоставляется скидка 20%. Стоимость разговора: 5.52 руб.

Индивидуальное задание №2

Для выполнения задания 2 добавьте условие в задание №1 для того чтоб актуально стало использование управляющей инструкции switch. Или возьмите одно из ниже представленных заданий.

Пример расширения задания 2:

Исходное задание

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

Расширенное задание:

Написать программу вычисления стоимости разговора по тeлефону с учетом системы скидок. Скидки, предоставляются следующим образом:

по субботам. – 20% по воскресеньям - 30% по средам – 10% по четвергам – 5%.

Основы создания программ в Си

Page 31 of 68

Создание программы с управляющей инструкции switch:

1.Написать программу, которая позволяет посчитать стоимость печати фотографий. Исходные данные: размер фотографий (9x12, 10x15 или 18x24) и их количество. Если заказанных фотографий больше 10, заказчику должна предоставляться скидка 10%. Ниже приведен рекомендуемый вид экрана программы (данные, введенные пользователем,

выделены полужирным).

Фото Размер: 1 - 9x12

2 - 10x15

3 - 18x24

Ваш выбор -> 1

Количество -> 12

Цена: 3.50 руб.

Количество: 12 шт.

Сумма: 42.00' руб.

Скидка: 4.20 руб.

К оплате: 37.80 руб.

2. Написать программу, которая запрашивает у пользователя номер дня недели и затем выводит его название. Если введены неправильные данные, программа должна вывести сообщение об ошибке.

3. Написать программу, которая вычисляет доход по вкладу. Процентная ставка зависит от срока вклада:

Срок

3 мес.

6 мес.

12 мес.

18 мес.

24 мес.

36 мес.

 

 

 

 

 

 

 

Процент

9,0%

11,5%

13,5%

15,0%

18,0%

24,0%

 

 

 

 

 

 

 

4. Написать программу, которая вычисляет стоимость междугороднего телефонного разговора (цена одной минуты зависит от расстояния до города, в котором находится абонент). Исходные данные для программы: код города и длительность разговора. Ниже приведены коды некоторых городов, и рекомендуемый вид экрана программы (данные, введенные пользователем, выделены полужирным).

Город

Код

Цена минуты (руб.)

 

 

 

Владивосток

423

2,2

 

 

 

Москва

495

1,0

 

 

 

Мурманск

815

1,2

 

 

 

Самара

846

1,4

 

 

 

Вычисление стоимости разговора по телефону Введите исходные данные:

Код города -> 423

Длительность(минут)-> 3

Город: Владивосток Цена минуты: 2.20 руб.

Основы создания программ в Си

Page 32 of 68

 

 

 

Стоимость разговора: 6.60 руб.

Управляющие конструкции циклов

Цикл for

Цикл for, наиболее универсальный из всех циклов языка С, выглядит так:

for ([инициализация]; [условие]; [модификация])

{

операторы

}

Прежде всего выполняется инициализация цикла; секция инициализации может содержать любое выражение. Инициализация производится только один раз перед началом работы цикла. Оценивается выражение условия. Если оно истинно, выполняется оператор тела цикла; если условие ложно, происходит выход из цикла и управление передается следующему оператору. После исполнения тела цикла производится модификация, после чего управление возвращается заголовку цикла и все повторяется снова. Секция модификации может содержать любое выражение; обычно в ней изменяют значения управляющих переменных цикла.

Простейшей и самой популярной конструкцией на основе цикла for является цикл с управляющей переменной-счетчиком:

int i;

for (i = 0; i < REPEAT; i++) doSomething(i);

Приступая к решению задач индивидуального задания, следует вспомнить, что

Инструкция for используется для организации циклов с фиксированным числом повторений.

Количество повторений цикла определяется начальным значением переменной-счетчика и условием завершения цикла.

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

Задание 2:

Написать программу, которая выводит таблицу значений функции у = - 2,Ах~ + 5х - 3 в диапазоне от -2 до 2, с шагом 0,5. Ниже приведен рекомендуемый вид экрана программы.

х| у

----------------

-2

|

-22.60

-1.5 |

-15.90

-1

|

-10.40

-0.5 |

-6.10

0

|

-3.00

0.5

|

-1.10

1

|

-0.40

1.5

|

-0.90

Основы создания программ в Си

Page 33 of 68

 

 

 

2 | -2.60

Запишите и скомпилируйте код реализации программы с применением цикла for. Проверьте правильность исполнения.

// Таблица функции

#include <stdio.h> #include <conio.h>

#define LB -2.0 // нижняя граница диапазона изменения аргумента

#define HB 2.0 // верхняя граница диапазона изменения аргумента

#define DX 0.5 // приращение аргумента

void main()

 

{

 

float x,y;

// аргумент и значение функции

int n;

// кол-во точек

int i;

// счетчик циклов

n = (HB - LB)/DX +1;

x = LB;

 

printf("------------------

\n");

printf(" x

| y\n");

printf("------------------

\n");

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

{

y = -2.4*x*x+5*x-3; printf("%6.2f | %6.2f\n" ,x ,y); x += DX;

}

printf("------------------\n");

printf("\nPress <Enter> for finish"); getch();

}

Цикл while и do… while

Реализация представленного задания возможна также с применением цикла do … while или while. Приступая к решению задач'этого раздела, следует вспомнить, что цикл do… while:

Цикл do while — это цикл с постусловием, т. е. инструкции тела цикла (между do и while) будут выполнены хотя бы один раз.

После слова while записывается условие повторного выполнения инструкций цикла.

Число повторений инструкций цикла do while определяется ходом выполнения программы.

Основы создания программ в Си

Page 34 of 68

Для завершения цикла do while в теле цикла обязательно должны быть инструкции, выполнение которых влияет на условие завершения цикла.

Цикл do while, как правило, используется для организации приближенных вычислений, в

задачах поиска и обработки данных, вводимых с клавиатуры или из файла.

Цикл while:

while — это цикл с предусловием, т.е. возможна ситуация, при которой инструкции тела цикла не будут выполнены ни разу.

Инструкции цикла while выполняются до тех пор, пока условие истинно (значение выражения Условие не равно нулю).

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

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

Задание 3:

Введите, скомпилируйте и проверьте реализацию задачи примера из задания №2 но с использование цикла while:

// Таблица функции

#include <stdio.h> #include <conio.h>

void main()

{

float x,y; // аргумент и значение функции

float x1,x2,dx; // диапазон и шаг изменения аргумента

printf("x1 -> "); scanf("%f",&x1); printf("x2 -> "); scanf("%f",&x2); printf("dx -> "); scanf("%f",&dx);

x = x1;

 

printf("------------------

\n");

printf(" x

| y\n");

printf("------------------

\n");

do

 

{