алгоритмизация
.pdf8Пусть элементами прямоугольного равнобедренного треугольника являются: 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