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

алгоритмизация

.pdf
Скачиваний:
13
Добавлен:
22.05.2015
Размер:
259.18 Кб
Скачать

8Пусть элементами прямоугольного равнобедренного треугольника являются: 1) катет а; 2) гипотенуза b; 3) высота h, опущенная из вершины прямого угла на гипотенузу; 4) площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

9Написать программу, которая по номеру месяца (1 – 12) выдает название следующего за ним месяца (1 – февраль, 2

– март, 3 – апрель и т.д.).

10Написать программу, которая бы по введенному номеру времени года (1 – зима, 2 – весна, 3 – лето, 4 – осень) выдавала соответствующие этому времени года месяцы и количество дней в каждом из них.

11В старояпонском календаре был принят 12-летний цикл годов. Годы цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер года и печатает его название по старояпонскому календарю. (Справка: 1996 г. – год Крысы – начало очередного цикла.)

12Для целого числа k от 1 до 99 напечатать фразу в формате «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.

13Написать программу, которая бы по введенному номеру единицы измерения (1 – миллиметр 2 – сантиметр, 3 – дециметр, 4 –метр, 5 –километр) и длине отрезка L в соответствующих единицах выдавала бы значение длины этого отрезка в метрах.

14Написать программу, которая по вводимому номеру курса k (от 1 до 5) выдает соответствующее сообщение в формате «Привет, k-курсник». Например, если k = 1, «Привет, первокурсник»; если k = 2, «Привет, второкурсник» и т.д.

15Написать программу, которая по введенному номеру мессяца (1 – 12) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то должно получиться 1 января – Новый год, 7 января – Рождество).

11

16Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4*k (где k – соответствующее частное); если остаток от деления на 4 равен 1 – N = 4*k + 1; если остаток от деления на 4 равен 2 – N = 4*k + 2; если остаток от деления на 4 равен 3 – N = 4*k + 3. Например, 12 = 4*3, 22 = 4*5 + 2.

17Имеется пронумерованный список деталей: 1) шуруп, 2) гайка, 3) винт, 4) гвоздь, 5) болт. Составить программу, которая по номеру детали выводит на экран ее название.

18Составить программу, позволяющую по последней цифре данного числа (0 – 9) определить последнюю цифру куба этого числа.

19Составить программу, которая для натурального числа от 1 до 10 печатает все делители этого числа в словесной форме. Например, 1 – один; 2 – один, два; 4 – один, два, четыре.

20Даны два действительных положительных числа х и у. Возможные арифметические операции над числами пронумерованы (1 – сложение, 2 – вычитание, 3 – умножение, 4 – деление). Составить программу, которая по введенному номеру операции выполняет соответствующее действие над числами.

21Написать программу, которая бы по введенному номеру единицы измерения (1 – миллиграмм, 2 – грамм, 3 – килограмм, 4 – центнер, 5 – тонна) и массе М в заданных единицах выдавала бы соответствующее значение массы в килограммах.

22Пусть элементами равностороннего треугольника являются: 1) сторона а; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

23Составить программу для определения подходящего возраста кандидатуры для вступления в брак с: 1) мужчиной,

2)женщиной. Известно, что рекомендуемый возраст женщины равен половине возраста мужчины плюс 7, а возраст мужчины - удвоенному возрасту женщины минус 14.

24Определить и вывести в словесной форме сколько полных сотен (одна, две, …, девять) содержится в заданном трехзначном целом числе. Например, 125 – одна, 348 – три, 711

– семь.

12

25Напишите программу, которая читает двузначное натуральное число от 20 до 99 в десятичном представлении, а на выходе выдает это же число на естественном языке. Например, 20 – двадцать, 34 – тридцать четыре, 52 – пятьдесят два.

26Вычислить день недели (понедельник, вторник, … , воскресенье) по заданным числу и номеру месяца в невисокосном году.

Методические указания

Для организации множественного выбора в алгоритмах вместо многократного применения оператора if else может быть использован оператор switch, который имеет следующий синтаксис:

switch (выражение целого типа)

{

case значение_1: последовательность_операторов_1; break;

case значение_2: последовательность_операторов_2; break;

...

case значение_n: последовательность_операторов_ n; break;

default:

последовательность_операторов_ n+1;

}

Оператору switch соответствует следующая управляющая конструкция:

13

выражение= Да последовательность_операторов_1 значение_1

Нет

выражение= Да последовательность_операторов_2 значение_2

Нет

 

выражение= Да последовательность_операторов_n значение_ n

Нет

последовательность_операторов_n+1

Ветвь default (последовательность_операторов_n+1) может отсутствовать.

Пример

Задание. Пусть имеются следующие группы элементов треугольника: 1) основание c и высота h; 2) две стороны a, c и угол между ними γ (в градусах); 3) три стороны a, b и c. Разработать программу, которая запрашивает номер группы элементов, вводит значения соответствующих элементов и вычисляет площадь треугольника.

Решение.

Треугольник

a b h

γ

c

14

Тестовая таблица

 

 

 

Вход

 

 

Выход

a

b

 

c

h

γ

s

группы

 

 

 

 

 

 

 

 

1

-

-

 

5

2.4

-

6

2

4

-

 

5

-

36.87

≈6

3

4

3

 

5

-

-

6

Программа choice1.cpp

#include "stdafx.h" #include "math.h"

int _tmain(int argc, _TCHAR* argv[])

{

double a,b,c,h,g,p,s; int i;

printf("group number="); scanf_s("%d",&i); switch(i)

{

case 1: printf("c,h=");

scanf_s("%le%le",&c,&h); s=c*h/2; printf("s=%le\n",s); break;

case 2: printf("a,c,g=");

scanf_s("%le%le%le",&a,&c,&g); g=g*3.1415/180; s=a*c*sin(g)/2; printf("s=%le\n",s);

break; case 3:

printf("a,b,c="); scanf_s("%le%le%le",&a,&b,&c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf("s=%le\n",s);

break; default:

printf("no existing number\n");

}

15

return 0;

}

Задача № 4

ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА

Цель. Знакомство с организацией вычислений посредством целочисленной арифметики.

Задание. Разработать алгоритм решения задачи, приведенной в табл. 4. Алгоритм представить его в виде блок-схемы и программы для ЭВМ на алгоритмическом языке С. Провести полное тестирование программы.

 

Таблица 4

 

 

Задание

варианта

 

 

 

1

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

 

ней цифры этого числа.

2

Дано натуральное число n. Переставить местами первую и

 

последнюю цифры этого числа.

3

Даны два натуральных числа m и n (m ≤ 9999, n ≤ 9999).

 

Проверить, есть ли в записи числа m цифры, совпадающие с

 

цифрами в записи числа n.

4

Дано натуральное число n. Проверить, есть ли в записи

 

числа три одинаковых цифры (n ≤ 9999).

5

Дано натуральное число n ≤ 99. Дописать к нему цифру k в

 

конец и в начало.

6

Даны натуральные числа n, k. Проверить, есть ли в записи

 

числа nk цифра m.

7

Среди всех n-значных чисел указать те, сумма цифр кото-

 

рых равна данному числу k.

8

Заданы три натуральных числа a, b, c, которые обозначают

 

число, месяц и год. Найти порядковый номер даты, начиная

 

отсчет с начала года.

9

Найти наибольшую и наименьшую цифры в записи данного

 

натурального числа.

10

Произведение n первых нечетных чисел равно р. Сколько

 

сомножителей взято? Если введенное число m не является

 

указанным произведением, сообщить об этом.

11

Найти на отрезке [n, t] натуральное число, имеющее

 

наибольшее количество делителей.

12

Задумано некоторое число х (х < 100). Известны числа k, t, n

 

– остатки от деления этого числа на 3, 5, 7. Найти х.

16

13Игрок А объявляет двузначное число от 01 до 99. Игрок В меняет местами его цифры и прибавляет полученное число к сумме его цифр. Полученный результат он объявляет игроку А. Игрок А проделывает с этим числом ту же процедуру, и так они продолжают поступать поочередно, объявляя числа. От суммы чисел берется остаток от деления на 100, поэтому объявляются лишь двузначные числа. Какие числа может объявить игрок А на начальном шаге, чтобы игрок В в некоторый момент объявил число 00.

14Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n – 1, у которых сумма всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет». Пример. n = 44. Числа: 17, 26, 35.

15Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n – 1, у которых произведение всех цифр совпадает с суммой цифр данного числа. Если таких чисел нет, то вывести слово «нет». Пример. n = 44. Числа: 18, 24.

16Дано натуральное число n. Определить количество 8- значных чисел, у которых сумма цифр в цифровой записи числа меньше, чем n. Если таких чисел нет, то вывести слово «нет».

17Дано натуральное число n. Определить количество 8- значных чисел, у которых сумма цифр в цифровой записи числа больше, чем n. Если таких чисел нет, то вывести слово «нет».

18Дано натуральное число n. Найти наибольшее число m (m > 1), на которое сумма цифр в цифровой записи числа n делится без остатка. Если такого числа нет, то вывести слово «нет». Пример. n = 12 345, m = 5. Сумма цифр числа n, равная 15, делится на 5.

19Дано натуральное число n. Найти наименьшее число m (n < m < 2n) которое делится на сумму цифр числа n (без остатка). Если такого числа нет, то вывести слово «нет». Пример. n = 12 345, m = 12360. Число 12 360 делится на число 15 — сумму цифр числа n.

20Дано натуральное число n (n > 9). Определить количество нулей, идущих подряд в младших разрядах данного числа. Пример. n = 1 020 000. Количество нулей равно четырем.

21Дано натуральное число n (n > 9). Определить количество нулей в цифровой записи числа, кроме нулей в младших разрядах. Пример. n = 10 025 000. Количество нулей равно двум.

17

22Дано натуральное число n (n > 9). Определить сумму цифр в первой половине числа (старшие разряды). Пример. n = 12 345 678. Сумма составляет 1 + 2 + 3 + 4 = 10.

23Дано натуральное число n (n > 9). Определить сумму цифр во второй половине числа (младшие разряды). Пример. n = 12 345 678. Сумма составляет 5 + 6 + 7 + 8 = 26.

24Дано натуральное число n. Если число содержит 3 цифры, то получить новое число m, которое образуется путем перестановки первой и последней цифр данного числа. Если количество цифр не 3, то m = n. Пример. n = 123, m = 321.

25Дано натуральное число n. Если число содержит 5 цифр, то получить новое число m, которое образуется путем исключения средней цифры исходного числа. Если количество цифр не 5, то m = n. Пример. n = 12345, m = 1245.

26Женщина шла на базар продавать яйца. Ее случайно сбил с ног всадник, в результате чего все яйца разбились. Всадник предложил оплатить убытки и спросил, сколько у нее было яиц. Женщина сказала, что точного числа не помнит, но когда она брала яйца парами, то оставалось одно яйцо. Одно яйцо оставалось также, когда она брала по 3, 4, 5 и 6 яиц, но когда она брала по 7 штук, то в остатке ничего не было. Какое минимальное число яиц могло быть в корзине?

27Дано натуральное число n. Проверить, будут ли все цифры числа различными.

28Найти все целые корни уравнения ax3 + bx2 + сх + d = 0, где а, b, с и d — заданные целые числа, причем а ≠ 0 и d ≠ 0. Замечание: целыми корнями могут быть только положительные и отрицательные делители коэффициента d.

29Дано натуральное число n. Поменять порядок следования цифр в этом числе на обратный или сообщить, что это невозможно в силу переполнения.

30Найти все делители натурального числа n.

Методические указания

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

18

Пример №1

Задание. Натуральное число m называется совершенным, если оно равно сумме всех своих делителей, включая 1, но исключая себя. Напечатать все совершенные числа меньшие заданного числа n.

Решение.

Поясняющая таблица

m

Делители, исключая

Сумма

Число m со-

п/п

 

m

делителей

вершенное?

1

4

1, 2

3

нет

2

6

1, 2, 3

6

да

3

10

1, 2, 5

8

нет

4

28

1, 2, 4, 7, 14

28

да

5

36

1, 2, 3, 4, 6, 9, 12, 18

55

нет

Текст программы

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

int m,n,d,s; printf("n="); scanf_s("%d",&n); for(m=1;m<n;m++)

{

s=0; for(d=1;d<m/2;d++)

{

if(m%d==0) s+=d;

}

if(s==m) printf("m=%d\n",m);

}

return 0;

}

Тестовая таблица

19

№ п/п

n

Все совершенные числа, меньшие n

1

7

6

2

35

6, 28

3

500

6, 28, 496

4

10 000

6, 28, 496, 8128

5

32 767

6, 28, 496, 8128

Пример №2

Задание. Последовательность натуральных чисел а, b, с называются Пифагоровой тройкой (а, b, с), если выполняется условие а2 + b2 = с2. Напечатать все (упорядоченные по возрастанию) Пифагоровы тройки с числами, меньшими n.

Решение.

 

 

Тестовая таблица

 

 

 

№ п/п

n

Все Пифагоровы тройки с числами, меньшими n

1

7

(3, 4, 5)

2

15

(3, 4, 5), (5, 12, 13)

3

25

(3, 4, 5), (5, 12, 13), (6, 8, 10),

 

 

(8, 15, 17), (9,12,15), (12, 16, 20)

 

 

Текст программы

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])

{

int a,b,c,n; printf("n="); scanf_s("%d",&n); for(a=1;a<n;a++)

for(b=a+1;b<n;b++) for(c=b+1;c<n;c++)

if(a*a+b*b==c*c) printf("a=%d b=%d

c=%d\n",a,b,c); return 0;

}

20