Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы программирования на языке С. Учебное пособие
.pdf
Пример 1. Ввести с клавиатуры два вещественных числа, очистить
экран и вывести на экран два вещественных числа в формате 2 знака поле запятой и заполнить пространство между ними символом 0 следующим образом:
32.760000000000000000000000000000000000000000000000000000005.41
#include <stdio.h>
#include <conio.h>
#include <iostream>
void main()
{
float a,b;
setlocale(0, "Russian");//функция библиотеки iostream
//для русификации вывода данных
printf ("\nВведите два числа: ");
scanf ("%f%f",&a,&b);
system("cls");// функция библиотеки iostream для очистки
экрана
printf("%.2f", a);
printf("%050.2f", b);
getch();
}
Пример 2. Ввести с клавиатуры целое число в десятичном виде, очи-
стить экран и вывести на экран это число в десятичном, шестнадцатеричном и восьмеричном виде следующим образом:
00000000000000000000000 11 0xB 013 000000000000000000000000
#include <stdio.h>
#include <conio.h>
#include <iostream>
void main()
{
setlocale(0, "Russian");//функция библиотеки iostream
//для русификации вывода данных
int a;
printf("\nВведите число\n");
scanf ("%d",&a);
system("cls");// функция библиотеки iostream для очистки
экрана
printf("%030c", ' ');
printf("%d%c%#X%c%#o%c", a,' ',a,' ',a,' ');
printf("%030c", ' ');
getch();}
Задание 3. Форматирование вывода
Каждому студенту рекомендуется выполнить хотя бы одно из
упражнений 1-12.
1. Описать переменную вещественного типа. Ввести ее значение
с клавиатуры. Очистить экран. Вывести значение переменной на экран
в формате 2 знака после запятой в следующем виде:
i = 4,33000000000000000000000000000000000000000000000000000
21

2. Описать переменную вещественного типа. Ввести ее значение
с клавиатуры. Очистить экран. Вывести значение переменной на экран
в формате 2 знака после запятой в следующем виде:
i = 00000000000000000000000000004,33
3. Описать четыре переменных целого типа, ввести их значение
с клавиатуры. Очистить экран. Вывести значения переменных на экран
следующим образом (как таблицу с невидимыми границами):
1065 231
8 23
4. Описать четыре переменных целого типа, ввести их значение
с клавиатуры. Очистить экран. Вывести значения переменных на экран
следующим образом:
| 12| 231|
| 124| 78|
5. Описать строку “number” (как массив символов) и переменную
вещественного типа. Ввести значение переменной с клавиатуры. Очистить
экран и вывести на экран значение переменной в формате 2 знака после запятой следующим образом
:
number=4,33
6. Описать строку “number” (как массив символов) и переменную
вещественного типа. Ввести значение переменной с клавиатуры. Очистить
экран и вывести на экран значение переменной в формате 2 знака после запятой следующим образом
number=4,33
7. Ввести с клавиатуры любое слово, очистить экран и вывести вве-
денное слово примерно в центре экрана.
8. Ввести с
клавиатуры любое слово, очистить экран и вывести вве-
денное слово в верхнем правом углу экрана.
9. Описать переменную целого типа, ввести с клавиатуры ее значе-
ние. Очистить экран и вывести на экран значение переменной в десятичном и восьмеричном виде примерно в центре экрана. Например,
i =9, i =011
10. Описать переменную целого типа, ввести
с клавиатуры ее значе-
ние. Очистить экран и вывести на экран значение переменной в десятичном и шестнадцатеричном виде следующим образом.
i=11, i=0xb
11. Обеспечить ввод с клавиатуры двух слов. Очистить экран. Выве-
сти слова на экран следующим образом:
Слово1 000000000000000000000000000000000000000000000000000
Слово2
12. Обеспечить ввод с клавиатуры двух слов. Очистить экран. Выве-
сти
слова на экран следующим образом:
Слово1 Слово2
22

4. ОСНОВНЫЕ ОПЕРАЦИИ ЯЗЫКА С
Знаки операций в языках программирования обеспечивают формирование и последующие вычисление выражений. Все операции делят на
унарные и бинарные. Следует учитывать, что один и тот же символ может
обозначать как унарную, так и бинарную операцию в зависимости от контекста. Например, символ “–” может быть унарным или
бинарным мину-
сом. Значение основных операций языка С приведено в табл. 5.
Таблица 5
Основные операции языка С
Знак
опера-
ции
+ плюс, унарный и бинарный (+x; x+y);
– минус, унарный и бинарный (–x; x–y);
++ увеличение на единицу (инкремент): (x++ – увеличение значения перемен-
ной x после ее использования, ++x – увеличение значения переменной x до
ее использования);
–– уменьшение на единицу (декремент): (x–– – уменьшение значения перемен-
ной x после ее использования, ––x – уменьшение значения переменной x до
ее использования);
& унарная операция получения адреса операнда (&x), бинарная поразрядная
конъюнкция (И) битовых представлений значений целочисленных операндов, например, 6&5 равно 4, действительно 1102&1012 равно 1002;
~ унарная операция поразрядного инвертирования внутреннего двоичного ко-
да целочисленного аргумента (~x);
| бинарная поразрядная дизъюнкция (ИЛИ) битовых представлений значений
целочисленных операндов, например, 6|5 равно 7, действительно, 1102|1012
равно 111
^ бинарная операция поразрядного исключающего ИЛИ (сложение по моду-
лю 2) битовых представлений целочисленных операндов, например, 6^5
равно 3, действительно, 1102|1012 равно 0112;
<< (>>) сдвиг влево (вправо) битового представления значения левого операнда на
количество разрядов, равное значению правого операнда, например, 5>>1
равно 2, действительно, 1012 при сдвиге вправо на 1 разряд дает 0102;
* унарная операция обращения по адресу (операция разыменования), бинар-
ная операция умножения;
/ бинарная операция деления; при целочисленных операндах абсолютное
значение результата округляется до целого, например, 20/3 равно 6;
% получение остатка от деления целочисленных операндов, например, 20%3
равно 2;
<(<=) меньше (меньше или равно) Результат операций сравнений целочисленный:
0 (ложь) или 1 (истина);
>(>=) больше (больше или равно)
== Равно
!= не равно
;
2
Значение
23

Окончание табл. 5
Знак
операции
&& конъюнкция (И) арифметических операндов или отношений; целочислен-
ный результат: 0 (ложь) или 1 (истина);
|| дизъюнкция (ИЛИ) арифметических операндов или отношений; целочис-
ленный результат: 0 (ложь) или 1 (истина);
= присвоение (присвоить значение выражения операнда из правой части
операнду из левой части: x=20–2*y);
= где – одни из знаков операций *, /, %, +, – ,&,|,^,<<,>>. Операция x=у
эквивалентна x=xy, например, x*=2; эквивалентно x=x*2;
, несколько выражений, разделенных запятой вычисляются слева направо,
в качестве результата сохраняется тип и значение самого правого выражения, например, d=4,d*2 равно 8;
Значение
Кроме того, в языке С определена условная операция, которая ис-
пользуется с тремя операндами и имеет формат:
выражение1 ? выражение2 : выражение3
Если выражение1 истинно, то есть не равно 0, то результатом становится значение выражения2, иначе результатом становится значение выражения3.
Несколько операций языка С, не рассмотренные здесь, будут введены в соответствующих главах.
Теперь, когда введены основные типы данных и операции, можно
перейти к решению простейших задач.
Пример. По двум заданным сторонам
прямоугольника найти его
площадь и длину диагонали.
#include <stdio.h>
#include <math.h>
void main ()
{
float a,b,S,d;
printf("%s","\nEnter a,b ");
scanf("%f%f",&a,&b);
S=a*b;
d=sqrt(a*a+b*b);
printf("\nSquare = %.2f",S);
printf("\nDiagonal = %.2f",d);
}
Заданиe 4. Простейшие вычисления
Каждому студенту рекомендуется выполнить хотя бы одно из
упражнений 1-12.
1. Вычислить целую часть среднего арифметического и среднего
геометрического трех вещественных чисел.
24

2. Вычислить длину окружности и площадь круга с заданным радиу-
сом R, а также длину дуги окружности в n.
3. Вычислить периметр и площадь прямоугольного треугольника по
двум заданным катетам.
4. По длинам гипотенузы и катета прямоугольного треугольника
определить длину второго катета и площадь треугольника.
5. По длинам двух сторон треугольника и углу (в
градусах) между
ними найти площадь треугольника и параллелограмма, построенного на
этих сторонах, а также по две высоты треугольника и параллелограмма,
опущенные на заданные стороны.
6. По заданным координатам (x
), (x2,y2), (x3,y3) вершин треуголь-
1,y1
ника найти его площадь:
yyxx
1
S
2
3131
.
yyxx
3232
7. По трем заданным ребрам прямоугольного параллелепипеда найти
его объем и диагональ.
8. По заданной высоте правильной пирамиды и стороне треугольни-
ка, лежащего в ее основании, найти ее объем.
9. По заданному радиусу найти площадь поверхности и объем шара.
10. По трем заданным сторонам треугольника a ,b, c найти высоту,
опущенную на сторону a:
))()((2
cpbpapp
,
h
a
a
p
cba
2
11. По трем заданным сторонам треугольника a ,b, c найти радиус
вписанного в него круга:
))()((
cpbpap
,
r
p
p
cba
.
2
12. По трем заданным сторонам треугольника a ,b, c найти радиус
описанного вокруг него круга:
R
abc
cba
,
p
))()((4
cpbpapp
.
2
25

5. КОНСТРУКЦИИ ВЫБОРА
К конструкциям выбора в С относят условную конструкцию if и переключатель switch.
Синтаксис условной конструкции:
if (выражение) оператор1;
if (выражение) оператор1; else оператор2;
Выражение должно быть скалярным и иметь арифметический тип
или тип указателя. В операторе if оператор1 выполняется в том случае, если выражение ненулевое, иначе выполняется оператор2 или не выполняются никакие действия, если оператор2 не задан, то есть отсутствует else.
В частности, если a целое, то if (a) эквивалентно if (a != 0).
Часто используются в условиях логические
операции &&, ||, !. Операции && и || не будут вычислять второй аргумент, если это не нужно.
Например, if (p && r) … вначале проверяет, является ли p не нулем,
и только, если это так, то проверяет r.
Некоторые простые операторы if могут быть с удобством заменены
выражениями арифметического if. Например,
if (a <= b) max = b;
else max = a;
лучше выражается так:
max = (a<=b) ? b : a;
В качестве операторов нельзя использовать описания, но можно ис-
пользовать блоки, в которых, в частности, могут быть включены описания.
Пример 1. Напишите программу, которая вычисляет и выводит на
экран значение
1,0,/1
y=
#include <stdio.h>
void main()
{
double x,y;
printf( "\nEnter x: ");
scanf ("%f", &x);
if ((x>0)||(x<-1)) y=1/x;
else y=x;
printf("\ny=%f",y);
}
xxx
.
01,
xх
Операторы в конструкции if в свою очередь могут быть условными, что позволяет организовывать цепочку проверок условий любой
вложенности. Синтаксис языка предполагает, что при вложенных условиях операторов каждое else соответствует ближайшему к нему предшествующему if.
Пример 2. Используя вложенные уловные операторы, найти макси-
мум из трех целых чисел.
26

#include <stdio.h>
void main()
{
int x,y,z, max;
printf("Enter x,y,z: ");
scanf("%d%d%d",&x, &y,&z);
if (x<y)
if (y<z) max=z;
else max=y;
else
if (x<z) max=z;
else max=x;
printf("\nMax= %d", max);
}
В тексте соответствие if и else показано с помощью отступов.
Переключатель является наиболее удобным средством для организа-
ции мультиветвления. Синтаксис переключателя:
switch (перключающее_выражение)
{case константное_выражение1: оператор1;
case константное_выражение2: оператор2;
. . .
case константное_выражениеn: операторn;
default:оператор;
}
Управляющая конструкция switch передает управление к тому из
помеченных с помощью case операторов, для которого значение константного выражения совпадает со значением переключающего выражения. Пе-
реключающее_выражение должно быть целочисленным или его значение должно приводится к целочисленному. В одном переключателе все
константные_выражения должны иметь различные значения, но быть
одного
типа. Любой из операторов может быть помечен одной или несколькими метками вида case константное_выражение:, например, может использовать конструкция вида
case константное_выражение1: case константное_выражение2:
оператор;
Если значение переключающего_выражения не совпадает ни с одним из константных_выражений, то выполняется переход к оператору,
отмеченному меткой default, которая может и отсутствовать (при этом не
выполняются никакие действия). Если не предусмотрены переходы и выходы из переключателя, то в нем последовательно выполняются все операторы, начиная с той
метки, на которую передано управление. Для выхода
из переключателя обычно используют оператор break.
Пример 3. Напишите программу, запрашивающую ввод с клавиату-
ры любой десятичной цифры и выводящую на экран названия нечетных
27

десятичных цифр не меньше заданной. Если была введена не цифра, то
выдается сообщение об ошибке.
#include <stdio.h>
void main()
{
char i;
printf("Enter number: ");
scanf ("%c",i);
printf("\n");
switch (i)
{
case '0': case '1': printf("one, ");
case '2': case '3': printf("three, ");
case '4': case '5': printf("five, ");
case '6': case '7': printf("seven, ");
case '8': case '9': printf("nine"); break;//производим
выход
// из переключателя
default: printf("\nIt's not number");
}
}
Если, например, на клавиатуре будет введена цифра 4, то в результа-
те выполнения программы на экран выведется: five, seven, nine.
Каждому студенту рекомендуется выполнить хотя бы одно из
упражнений 1-12 заданий 1,2,3,4.
Задание 5. Обработка введенного символа
1. Считать символ и определить, является ли он цифрой.
2. Считать символ и определить, является ли он латинской буквой.
3. Считать
символ и определить, является ли он русской буквой.
4. Считать символ и определить, является ли он прописной буквой
русского или латинского алфавита.
5. Считать символ и определить, является ли он строчной буквой
русского или латинского алфавита.
6. Считать символ и определить, является ли он гласной буквой рус-
ского алфавита.
7. Считать символ
и определить, является ли он гласной буквой ла-
тинского алфавита.
8. Считать символ и определить, является его ASCII–код четным.
9. Считать два символа и выдавать на экран сообщение, код какого
из них больше.
10. Считать два символа строчных латинских букв и определить,
расположены ли они по алфавиту.
11. Считать два символа цифр и
определить, какая из них больше.
28

12. Считать скобку и определить, открывающая она или закрываю-
щая. Возможны скобки (), {}, [], <>.
Задание 6. Вычисление значения функции
2
1.
y
3.
5.
7.
y
z
z
8. Если
y
;0,1
xx
2.
;10,1
xx
.1,0
x
;,1
ax
1
;,2
axa
21
4.
;,3
axa
32
.,4
ax
3
;0,0,1
yx
;0,0,2
yx
6.
;0,0,3
yx
.0,0,4
yx
;1,
yx
;10,
yx
.0,
yx
yx
, то
z
2
y
z
z
yxyx
;,/
в противном случае z = 0.
yxyx
;,/
9. Если x<0 или x>10, то z=x, в противном случае
10. Если
11. Если
aa
21
, то
aaa
321
или
y
aa
, то
31
bxa
;,
11
bxba
;,
212
bx
.,0
2
;,
yxx
;,
yxy
.,1
yx
;|,|
yxx
;|,|
yxy
.,0
yx
z
;,
aaa
211
в противном случае y=a3.
;,
aaa
212
aaaa
y
;,
2313
в противном случае
aaaa
;,
2312
2
;,
yxx
2
.,
yxy
ay
.
1
;,1
12. Если x=y
2
или y=x2, то z=0, в противном случае
z
yx
.,2
yx
Задание 7. Применение разветвляющихся алгоритмов
при решении простейших задач
1. Даны числа
,,,,, cbacba
. Определить, коллинеарны ли вектора
222111
с такими координатами.
2. Значение переменных a,b,c поменять местами так, чтобы оказалось
cba
.
3. По номеру некоторого года определить номер его столетия
(учесть, что, к примеру, началом 20-го столетия был 1901, а не 1900 год).
4. Даны числа
сываемые уравнениями
,,,,, cbacba
. Выяснить, являются ли прямые, опи-
222111
и
cybxa
111
cybxa
параллельными, перпен-
222
дикулярными, просто пересекаются либо совпадают.
29

5. По трем введенным вещественным числам выяснить, можно ли
построить треугольник с такими длинами сторон, и, если можно, то какой:
равносторонний, равнобедренный, прямоугольный или общего вида.
,,,,, cbacba
6. Даны числа
. Определить, равны ли вектора с та-
222111
кими координатами.
7. Введите свой месяц и день рождения. Определите, является ли ваш
день рождения очень счастливым, просто счастливым или обычным. День
считается очень счастливым, если остатки от деления на 7 сумм цифр месяца и дня совпадают, просто счастливым, если хотя бы один из этих
оста-
ток равен 0, и обычным в противном случае.
8. Определить, имеют ли поля шахматной доски (n
наковый цвет. (n
, n2,m2 – натуральные числа от 1 до 8).
1,m1
9. Определить, угрожает ли слон, расположенный на поле (n
шахматной доски, фигуре, расположенной на поле (n
2,m2
) и (n2,m2) оди-
1,m1
1,m1
). (n1,m1, n2,m2 –
)
натуральные числа от 1 до 8).
10. Определить, угрожает ли ферзь, расположенный на поле (n
шахматной доски, фигуре, расположенной на поле (n
). (n1,m1, n2,m2 –
2,m2
1,m1
)
натуральные числа от 1 до 8).
11. Определить, угрожает ли конь, расположенный на поле (n
шахматной доски, фигуре, расположенной на поле (n
). (n1,m1, n2,m2 –
2,m2
1,m1
)
натуральные числа от 1 до 8).
12. Даны три вещественных числа a,b,c. Вычислить, сколько веще-
ственных корней имеет квадратное уравнение
или не имеет их
02 cbxax
вообще. Если вещественные корни существуют, вычислить их.
Задание 8. Mультиветвление
1. Напишите программу, запрашивающую с клавиатуры два вещественных числа и один из знаков операций +, –,*,/ и выводящую на экран
результат соответствующего арифметического действия над этими числами.
2. Напишите программу, выдающую на экран название оценки в зависимости
от количества набранных баллов: 5 – «отлично», 4 – «хорошо»,
3 – «удовлетворительно», 1,2 – «неудовлетворительно».
3. Напишите программу, запрашивающую с клавиатуры два веще-
ственных числа и один из знаков операций <(меньше), >(больше),
=(равно), !(не равно) и выводящую на экран результат соответствующей
операции сравнения над этими числами.
4. Введите число и месяц рождения. Определите, под каким знаком
зодиака
рожден человек в этот день. (Считается, что каждый знак зодиака
начинает оказывать свое влияние с 22 числа каждого месяца).
5. Напишите программу, выводящую на экран основное положительное качество человека по дате его рождения. Если сумма цифр числа
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
