- •1. ЦЕЛЬ РАБОТЫ
- •2. КРАТКОЕ ОПИСАНИЕ СРЕДЫ Visual C++
- •3. СОЗДАНИЕ КОНСОЛЬНОГО ПРИЛОЖЕНИЯ
- •4. ОФОРМЛЕНИЕ ПРОГРАММ
- •5. ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ
- •6. ИНСТРУКЦИЯ ПРИСВАИВАНИЯ
- •7. ВЫВОД ДАННЫХ
- •8. ВВОД ДАННЫХ
- •9. ПРОГРАММЫ С ЛИНЕЙНОЙ СТРУКТУРОЙ
- •10. БИБЛИОТЕКА МАТЕМАТИЧЕСКИХ ФУНКЦИЙ
- •11. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. ОПЕРАТОРЫ ВЕТВЛЕНИЯ
- •3. ОПЕРАТОРЫ ЦИКЛА
- •4. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. МАССИВЫ
- •3. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •1. ЦЕЛЬ РАБОТЫ
- •2. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
- •3. ОБЪЯВЛЕНИЕ И ОПРЕДЕЛЕНИЕ ФУНКЦИЙ
- •4. ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
- •5. ПАРАМЕТРЫ ФУНКЦИИ И ОБРАЩЕНИЕ К ФУНКЦИИ
- •6. ОСОБЕННОСТИ РАБОТЫ В СРЕДЕ VISUAL C++
- •7. ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ
- •СПИСОК ЛИТЕРАТУРЫ
8. ВВОД ДАННЫХ
Приступая к решению задач этого раздела, необходимо знать, что:
для ввода исходных данных с клавиатуры в языке С предназначена функция scanf;
первым параметром функции scanf является управляющая строка, остальные параметры адреса переменных, значения которых должны быть введены;
управляющая строка представляет собой заключенный в двойные кавычки список спецификаторов: % d – для ввода целых чисел,% i – для ввода целых чисел со знаком, % u – для ввода целых беззнаковых целых, % f – для ввода дробных чисел, % c – для ввода символа, % s – для ввода строки;
использование имени переменной, а не ее адреса в качестве параметра функции scanf является типичной ошибкой начинающих программистов. Кстати, компилятор эту ошибку не обнаруживает;
в языке С++ объекты имеют заголовочный файл <iostream.h> и стандартный поток ввода с клавиатуры cin.
9. ПРОГРАММЫ С ЛИНЕЙНОЙ СТРУКТУРОЙ
Решая задачи этого раздела, необходимо помнить, что:
программы с линейной структурой являются простейшими и используются, как правило, для реализации простых вычислений по формулам;
в программах с линейной структурой инструкции выполняются последовательно, одна за другой;
алгоритм программы с линейной структурой может быть представлен в виде схемы, показанной на рис. 1.
Ввод
исходных
данных
Вывод
результата
Рис. 1. Структурная схема линейного алгоритма
9
Пример 3. Деление простых дробей |
|
|
|
a d |
|
|
|
|
p |
a |
: |
с |
|
|
m |
. |
|
|
|
b c |
|
|||||
|
в |
|
d |
|
|
n |
Программа написана на языке С: #include <stdio.h>
void main()
{int a, b, c, d; float p, m, n; printf ("\na="); scanf ("%d", &a); printf ("\nb="); scanf ("%d", &b); printf ("\nc="); scanf ("%d", &c); printf ("\nd=");
scanf ("%d", &d); m=a*d;
n=b*c;
printf ("\nm=%f",m); printf ("\nn=%f",n); p=m/n;
printf ("\np=%f",p);}
Программа написана на языке С++:
#include <iostream.h> void main()
{int a, b, c, d; float p, m, n; cout<<"\na="; cin>>a; cout<<"\nb="; cin>>b; cout<<"\nc="; cin>>c; cout<<"\nd=";
cin>>d;
m=a*d;
n=b*c;
cout<<"\nm="<<m;
cout<<"\nn="<<n;
p=m/n;
cout<<"\np="<<p<<endl;}
10
Пример 4. Операции увеличения и уменьшения на 1 (++ и --)
4.1 Префиксное увеличение на 1
#include <iostream.h> void main()
{ int x=3,y=4,c; c=++x*++y;
cout<<"\nc="<<c;
cout<<"\nx="<<x;
cout<<"\ny="<<y<<endl;}
4.2 Постфиксное увеличение на 1
#include <iostream.h> void main()
{ int x=3,y=4,c; c=x++*y++;
cout<<"\nc="<<c;
cout<<"\nx="<<x;
cout<<"\ny="<<y<<endl;}
4.3 Префиксное уменьшение на 1
#include <iostream.h> void main()
{ int x=3,y=4,c; c=--x*--y;
cout<<"\nc="<<c;
cout<<"\nx="<<x;
cout<<"\ny="<<y<<endl;}
4.4 Постфиксное уменьшение на 1
#include <iostream.h> void main()
{ int x=3,y=4,c; c=x--*y--;
cout<<"\nc="<<c;
cout<<"\nx="<<x;
cout<<"\ny="<<y<<endl;}
10. БИБЛИОТЕКА МАТЕМАТИЧЕСКИХ ФУНКЦИЙ
При вычислении стандартных математических функций, перечисленных в табл. 1, необходимо к программе подключить библиотеку математических функций. Для подключения этой библиотеки используется директива препроцессора #include <math.h>. Здесь math.h – имя заголовочного файла этой библиотеки.
11
Пример 5. Программа вычисления площади треугольника по формуле Герона
S p( p a)( p b)( p c) ,
где a, b, c – стороны треугольника, p – полупериметр треугольника.
#include <stdio.h> #include <math.h>
void main()
{float a,b,c,p,s;
printf ("\na="); scanf ("%f", &a); printf ("\nb="); scanf ("%f", &b); printf ("\nc="); scanf ("%f", &c); p=(a+b+c)/2; s=sqrt(p*(p-a)*(p-b)*(p-c)); printf ("Ploshad=%5.4f\n",s);}
Таблица 1
Математические функции (заголовочный файл math.h)
Функция |
Тип аргумента |
Тип результата |
Обращение |
абсолютное значение целого числа |
int |
int |
abs (x) |
арккосинус (радианы) |
double |
double |
acos (x) |
арксинус (радианы) |
double |
double |
asin (x) |
арктангенс (радианы) |
double |
double |
atan (x) |
округляет до ближайшего целого, не |
double |
double |
ceil (x) |
меньшего x (округляет вверх) |
|
|
|
косинус (x в радианах) |
double |
double |
cos (x) |
гиперболический косинус |
double |
double |
cosh (x) |
экспонента от x – ex |
double |
double |
exp (x) |
|
|
|
|
абсолютное значение вещественного x |
double |
double |
fabs (x) |
округляет до ближайшего целого, не |
double |
double |
floor (x) |
превышающего x (округляет вниз) |
|
|
|
остаток от деления нацело x на y |
double |
double |
fmod (x,y) |
выделяет из числа мантиссу и целую |
double |
double |
frexp (double x, int |
часть |
|
|
*expptr) |
преобразует мантиссу и показатель |
double |
double |
ldexp (double x, int exp) |
степени в число (противоположна |
|
|
|
функции frexp) |
|
|
|
логарифм натуральный – ln x |
double |
double |
log (x) |
логарифм десятичный – log x |
double |
double |
log10 (x) |
разбивает число на целую и дробную |
double |
double |
modf (double x, double |
части |
|
|
*intptr) |
x в степени y – x y |
double |
double |
pow (x,y) |
|
|
|
|
синус (x в радианах) |
double |
double |
sin (x) |
гиперболический синус |
double |
double |
sinh (x) |
корень квадратный (положительное |
double |
double |
sqrt (x) |
значение) |
|
|
|
тангенс (x в радианах) |
double |
double |
tan (x) |
гиперболический тангенс |
double |
double |
tanh (x) |
12