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

Основы программирования на языке С. Учебное пособие

.pdf
Скачиваний:
1
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Пример 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]