4304

Программная реализация алгоритмов линейной структуры

Лабораторная работа

Информатика, кибернетика и программирование

Программная реализация алгоритмов линейной структуры Цель работы: изучение основных средств языка программирования С++, необходимых для кодирования алгоритма линейной структуры, реализующего вычисления по математическим формулам. Задачи ...

Русский

2012-11-16

224.5 KB

39 чел.

Программная реализация алгоритмов линейной структуры

Цель работы: изучение основных средств языка программирования С++,  необходимых для кодирования алгоритма линейной структуры, реализующего вычисления по математическим формулам.

Задачи  работы:

  •  изучить основные типы данных, арифметические операции, математические функции языка С++;
  •  освоить использование оператора присваивания, запись математических выражений на языке С++, организацию стандартного ввода-вывода с применением функций библиотеки stdio.

3.1. Порядок выполнения работы

  1.  Изучите теоретические сведения к данной лабораторной работе (п. 3.2)
    1.  Ознакомьтесь с постановкой задачи (п. 3.3). Вариант задания соответствует вашему номеру в списке группы.
    2.  Разработайте блок-схему алгоритма решения поставленной задачи.
    3.  Составьте программу на языке С++ и выполните ее отладку.
    4.  Подготовьте отчет по лабораторной работе. Отчет должен включать в себя:

-  титульный лист;

-  цель лабораторной работы;

-  постановку задачи;

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

3.2. Общие сведения

Данные, обрабатываемые программой на языке С++, должны быть объявлены как относящиеся к определенному типу.

Тип данного определяет:

  •  объем памяти, занимаемый элементом данных;
  •  множество значений, которое элемент данных может принимать;
  •  множество операций, которые могут быть выполнены над элементом данных.

Основные типы языка подразделяются на целочисленные типы и типы с плавающей точкой.

Целочисленные типы

Целочисленные типы используются для записи символов и целых чисел. К целочисленным относят типы, представленные следующими именами:

char        (символьный);

short…...(короткий);

int          (целый);

long        (длинный).

Имена целочисленных типов могут  вместе с модификаторами signed (знаковый) и unsigned(беззнаковый).

Размеры и диапазон значений целых типов представлены в табл.3.1.

Таблица 1. Таблица целых типов данных

Тип данных

размер, байт

Диапазон зачений

Минимальное

Максимальное

signed char

1

-128

127

unsigned char

1

0

255

signed short

2

-32768

32767

unsigned short

2

0

65535

int

2

-32768

32767

unsigned int

2

0

65535

signed long

4

-2147483648

2147483647

unsigned long

4

0

4294967295

Типы с плавающей точкой

Типы с плавающей точкой используются для работы с вещественными числами, представленными в форме записи с десятичной точкой или в «научной» записи, например:

678, -12, 5.786e3, 45,78

К типам с плавающей точкой относят типы, представленные следующими именами:

  •  float;
  •  double;
  •  long double.

Размеры и диапазон значений типов с плавающей точкой представлены в табл. 3.2.

Таблица 2. Таблица типов данных с плавающей точкой

Тип данных

размер, байт

Диапазон зачений

Минимальное

Максимальное

float

4

3.4e-38

3.4e+38

double

8

1.7e-308

1.7e+308

long double

10

3.4e-4932

3.4e+4932

Имена данных

В программе с помощью имен обозначаются константы, переменные, функции,  массивы.

Имя (идентификатор) может содержать буквы, цифры, символы подчеркивания. Имя должно начинаться с буквы или символа подчеркивания. Длина имени в языке не оговаривается, но многие компиляторы не воспринимают имена длиннее 32 символов. Строчные и прописные буквы в имени различаются. Примеры имен:

a2, max, Max, sort, kol_it, name, str,array.

В качестве имени нельзя использовать служебные слова языка.

Ключевые слова - это зарезервированные идентификаторы, которые наделены определенным смыслом. Их можно использовать только в соответствии со значением известным компилятору языка С++.

Приведем список некоторых ключевых слов языка С++.

  auto          double      int       struct     break     else    long    switch

  register      tupedef    char    extern    return    void    case    float

  unsigned   default     for       signed   union     do       if        sizeof

  volatile      continue  enum   short     while

Константы

В языке СИ разделяют четыре типа констант: целые константы, константы с плавающей точкой, символьные константы и строковые.

Целая константа – это десятичное, восьмеричное или шестнадцатеричное число, которое представляет целую величину в одной из следующих форм: десятичной, восьмеричной или шестнадцатеричной.

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

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

Шестнадцатеричная константа начинается с обязательной последовательности 0х или 0Х и содержит одну или несколько шестнадцатеричных цифр (цифры представляющие собой набор цифр шеснадцатеричной системы счисления: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F)

Примеры целых констант:

Десятичная                      Восьмеричная       Шестнадцатеричная

константа                         константа               константа

16                                      020                         0x10

127                                    0117                       0x2B

240                                    0360                       0XF0

Если требуется сформировать отрицательную целую константу, то используют знак "-" перед записью константы (который будет называться унарным минусом). Например: -0x2A, -088, -16 .

Каждой целой константе присваивается тип, определяющий преобразования, которые должны быть выполнены, если константа используется в выражениях. Тип константы определяется следующим образом:

- десятичные константы рассматриваются как величины со знаком, и им присваивается тип int (целая) или long (длинная целая) в соответствии со значением константы. Если константа меньше 32768, то ей присваивается тип int в противном случае long.

  •  восьмеричным и шестнадцатеричным константам присваивается тип int, unsigned int (беззнаковая целая), long или unsigned long в зависимости от значения константы согласно табл 3.3

Таблица 3.3

Диапазон

шестнадцатеричных

констант

Диапазон

восьмеричных констант

Тип

0x0 - 0x7FFF

0 - 077777

int

0X8000 - 0XFFFF

0100000 - 0177777

unsigned int

0X10000 - 0X7FFFFFFF

0200000 - 017777777777

long

0X80000000 - 0XFFFFFFFF

020000000000 - 037777777777

unsigned long

Для того чтобы любую целую константу определить типом long, достаточно в конце константы поставить букву "l" или "L", например:

5l, 6l, 128L, 0105L, OX2A11L.

Константа с плавающей точкой – десятичное число, представленное в виде действительной величины с десятичной точкой или экспонентой. Формат имеет вид:

[ цифры ].[ цифры ] [ Е|e [+|-] цифры ] .

Число с плавающей точкой состоит из целой и дробные части и (или) экспоненты. Константы с плавающей точкой представляют положительные величины удвоенной точности (имеют тип double). Для определения отрицательной величины необходимо сформировать константное выражение, состоящее из знака минуса и положительной константы.

Примеры: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2

Символьная константа – представляется символом заключенном в апострофы, например

' '- пробел ,

'Q'- буква Q ,

Управляющие символьные последовательности

В языке С++ широко используются так называемые управляющие символьные костанты (управляющие последовательности), т.е. специальные символьные комбинации, используемые в функциях ввода и вывода информации. Управляющая последовательность строится на основе использования обратной дробной черты (\) (обязательный первый символ) и комбинации латинских букв и цифр (табл. 3.4).

Последовательности вида \ddd и \xddd (здесь d обозначает цифру) позволяет представить символ из набора кодов ПЭВМ как последовательность восьмеричных или шестнадцатеричных цифр соответственно. Например символ возврата каретки может быть представлен различными способами:

\r - общая управляющая последовательность,

\014 - восьмеричная управляющая последовательность,

\x00С - шестнадцатеричная управляющая последовательность.

Управляющая последовательность рассматривается как одиночный символ, допустимо ее использовать в символьных константах. Значением символьной константы является числовой код символа. Примеры:

'\n' - символ новой строки ,

'\\' - обратная дробная черта ,

'\v' - вертикальная табуляция .

Символьные константы имеют тип int и при преобразовании типов дополняются знаком.

Таблица 3.4 Управляющие символьные последовательности

Управляющая последовательность

Наименование

Шеснадцатеричная замена

\a

Звонок

007

\b

Возврат на шаг

008

\t

Горизонтальная табуляция

009

\n

Переход на новую строку

00A

\v

Вертикальная табуляция

00B

\r

Возврат каретки

00C

\f

Перевод формата

00D

\"

Кавычки

022

\'

Апостроф

027

\0

Ноль-символ

000

\\

Обратная дробная черта

05C

\ddd

Символ набора кодов ПЭВМ в восьмеричном представлении

 

\xddd

Символ набора кодов ПЭВМ в шестнадцатеричном представлении

 

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

Например: "Школа N 35", "город Тамбов", "YZPT КОД".

Отметим, что все управляющие символы, кавычка ("), обратная дробная черта (\) и символ новой строки в строковом литерале и в символьной константе представляются соответствующими управляющими последовательностями. Каждая управляющая последовательность представляется как один символ. Например, при печати литерала "Школа \n N 35" его часть "Школа" будет напечатана на одной строке, а вторая часть "N 35" на следующей строке.

Символы строкового литерала сохраняются в области оперативной памяти. В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0.

Строковый литерал имеет тип char[] . Это означает, что строка рассматривается как массив символов. Отметим важную особенность, число элементов массива равно числу символов в строке плюс 1, так как нулевой символ (символ конца строки) также является элементом массива. Все строковые литералы рассматриваются компилятором как различные объекты.

Операции языка С++

Обработка данных осуществляется путем выполнения над ними различных операций. Все операции языка С можно разделить на:

  •  Арифметические
  •  Операции отношений
  •  Логические.

Знаки арифметических операций:

+                       сложение

-                         вычитание

*                        умножение

/                         деление

%         получение остатка от деления нацело (деление по модулю).

Бинарными арифметическими операциями являются +, -, *, / и операция деления по модулю %. Имеется унарная операция - , но не существует унарной операции +.

Данные, над которыми выполняется операция, называются операндами.

Операция сложения + приводит к сложению двух значений, размещенных слева и справ от знака сложения.

Операция вычитания -  приводит к вычитанию числа, следующего за знаком - , из числа, предшествующего этому знаку.

Операнды, над которыми выполняется операции сложения или вычитания, могут быть константами или переменными.

Операция умножения вычисляет произведение двух операндов, которыми могут быть как константы, так и переменные

Примеры:

                           i=  k*8;

                            b=56*5;

                            g=d*e;

Величина, расположенная слева от знака деления / , делится на значение, указанное справа от этого знака.

Например, в результате выполнения оператора

b   = 45.0 / 9.0;

переменная b получит значение 5.0.

Здесь выполняется деление над данными с плавающей точкой, и результат также является  числом с плавающей точкой. При выполнении операции деления над операндами смешанных типов результат также будет являться числом с плавающей точкой, например:

                             c = 36 /12.0;

Результатом операции деления будет число с плавающей точкой 3.0.

При делении целых дробная часть результата отбрасывается.


            1 / 2   даст в результате  0;

  5 / 2   даст в результате  2;

  24 / 7   даст в результате  3.

Операцию получения остатка от деления % нельзя использовать с типами float или double, она применяется только к данным целого типа. Операция

X % Y

дает остаток от деления X на Y и, следовательно, равно нулю, когда X делится на Y точно.

9 % 4 дает в результате 1;

8 % 4 дает в результате 0;

15 % 3 дает в результате 1;

4 % 5 дает в результате 4;

3 % 7 дает в результате 3.

ПРИОРИТЕТ И ПОРЯДОК ВЫЧИСЛЕНИЙ

Приоритет представляет собой основное правило определения порядка вычисления выражений.

Операции + и - имеют одинаковое старшинство, которое младше одинакового уровня старшинства операций *, / и %, которые в свою очередь младше унарного минуса. Арифметические операции группируются слева направо.

Приоритет арифметических операций показан в таблице 3.5.

         Таблица 3.5 – Операции в порядке уменьшения приоритета

Операция

Порядок вычислений

(  )

Слева направо

- (унарный)

Справа налево

*    ./

Слева направо

+    -

Слева направо

= (присваивание)

Справа налево

Например, в нижеприведенных выражениях цифрами показана последовательность выполнения  операций

 a * bc /d  * f +  g +h

    1    4    2     3    5      6

скобки меняют последовательность выполнения операций:

a * b – ( c / (d  * f ) + g )+h

   4     5      2       1       3       6

ПРЕОБРАЗОВАНИЯ ТИПОВ ПРИ ВЫПОЛНЕНИИ ОПЕРАЦИЙ

Если в бинарной операции участвуют операнды различных типов, то перед выполнением операции "низший" тип преобразуется к "высшему", и получается результат "высшего" типа. Более точно, к каждой арифметической операции применяется следующая последовательность правил преобразования.

Типы char и short преобразуются в int, а float в double.
    
Если один из операндов имеет тип
double, то другой преобразуется в double, и результат имеет тип double.

Если один из операндов имеет тип long, то другой преобразуется в long, и результат имеет тип long.

Все переменные типа float в выражениях преобразуются в double; в языке C++ вся плавающая арифметика выполняется с двойной точностью.

ОПЕРАТОР ПРИСВАИВАИВАНИЯ   =

Имеет вид:

ПЕРЕМЕННАЯ  = ВЫРАЖЕНИЕ;

Присваивает  значение выражения справа от знака операции = переменной слева от знака.

Например:

         a = b* c /f  +k;

Переменной а присваивается результат вычисления выражения, записанного справа.

Допускается множественное присваивание, например:

a = b = c = d = 1;

Операторы присваивания, в которых и в левой и в правой частях встречается одно и то же имя переменной, например:

a = a + b;

d = d * m;

x = x / y;

могут быть записаны короче:

a + =b;

d * =m;

x / = y;

Эти записи не только короче, но и больше соответствуют человеческому мышлению, так как мы говорим: “увеличить переменную а на величину переменной b”.

Преобразования возникают и при присваиваниях: значение правой части преобразуется к типу левой, который и является типом результата. Символьные переменные преобразуются в целые  либо со знаковым расширением, либо без него, как описано выше. Обратное преобразование int в char ведет себя хорошо - лишние биты высокого порядка просто отбрасываются. Таким образом


int i;
char c;

i = c;
c = i;

значение 'с' не изменяется. Это верно независимо от того, вовлекается  ли знаковое расширение или нет.
    Если х типа float, а i типа
int, то как

х  =
i;
так и

i
= х;
приводят к преобразованиям; при этом
float преобразуется в int отбрасыванием дробной части. Тип double преобразуется во float округлением. Длинные целые преобразуются в более короткие целые и в переменные типа char посредством отбрасывания лишних битов высокого порядка.

ОПЕРАЦИИ УВЕЛИЧЕНИЯ И УМЕНЬШЕНИЯ

В языке C++ предусмотрены две необычные операции для увеличения и уменьшения зн
ачений переменных. Операция увеличения ++ (инкремент) добавляет 1 к своему операнду, а операция уменьшения – (декремент) вычитает 1.

Необычный аспект заключается в том, что ++ и -- можно использовать либо как префиксные операции (перед переменной, как в ++n), либо как постфиксные (после переменной: n++). Эффект в обоих случаях состоит в увеличении n. Но выражение ++n увеличивает переменную n до использования ее значения, в то время как n++ увеличивает переменную n после того, как ее значение было использовано. Это означает, что в контексте, где используется значение переменной, а не только эффект увеличения, использование ++n и n++ приводит к разным результатам. Если n = 5, то

 

 х = n++;

 

устанавливает х равным 5, а

 

 х = ++n;

    

полагает х равным 6. В обоих случаях n становится равным 6. Операции увеличения и уменьшения можно применять только к переменным; выражения типа х=(i+j)++ являются незаконными.     В случаях, где нужен только эффект увеличения, а само значение не используется, как, например, в

                   n++;


выбор префиксной или постфиксной операции является делом вкуса, но встречаются ситуации, где нужно использовать именно ту или другую операцию.

ОПЕРАЦИИ ОТНОШЕНИЙ

Бинарные операции отношений сравнивают  первый  операнд  со  вторым и вырабатывают значение 1(true, то есть истина) и 0 (false, то есть ложь). Типом результата является int. Имеются следующие операции отношений:

Операция                     Отношение

               

   <                 Первый операнд меньше, чем второй операнд

   >                 Первый операнд больше, чем второй операнд

   <=               Первый  операнд меньше или равен  второму операнду

   >=                Первый  операнд больше или равен  второму операнду

   = =               Первый операнд   равен   второму операнду

   ! =                Первый операнд не равен  второму операнду

Типы первого и второго операндов могут различаться. Обычные арифметические  преобразования  выполняются  над  целыми и плавающими операндами.

             int x = 1, y = 1;

              x < y         /* выражение 1 */

              y > x         /* выражение 2 */

              x <= y        /* выражение 3*/

              x >= y        /* выражение 4 */

              x = = y       /* выражение 5 */

              x != y        /* выражение 6 */

          

В этом примере  x и y равны, поэтому выражения 3,4 и 5 имеют значение 1 (истина),  а выражения 1,2 и 6 имеют значения 0 (ложь).

Приоритет операций отношений меньше, чем у арифметических операций. Это означает, например, что выражение

                                                      i < lim – 1;

эквивалентно выражению

                                                      i < ( lim – 1 );

МАТЕМАТИЧЕСКИЕ БИБЛИОТЕЧНЫЕ ФУНКЦИИ

Математическими называют функции, с помощью которых вычисляются тригонометрические, логарифмические, экспоненциальные и другие функции. Использование математических функций требует включения в текст программы заголовочного файла <math.h>. В этом файле определены прототипы математических функций, а также некоторые математические константы.

В таблице 1 приведены наиболее часто используемые математические функции. В этой таблице x имеет тип double, n – тип int. Все функции, кроме abs(n) возвращают значение типа double. Функция abs(n) возвращает значение целого типа.

                                                           

Таблица 3.6 – Математические функции

Функция

Назначение функции

sin(x)

синус x

cos(x)

косинус  x

tan(x)

тангенс  x

asin(x)

арксинус  x

acos(x)

арккосинус  x

atan(x)

арктангес  x

exp(x)

экспоненциальная функция е в степени x

log(x)

натуральный логарифм ln(x),  x>0

log10(x)

десятичный  логарифм lg(x),  x>0

pow(x,y)

х в степени у

sqrt(x)

квадратный корень от х

abs(n)

абсолютное значение целого аргумента n

fabs(x)

абсолютное значение аргумента x типа double

Ввод и вывод информации

Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много). Эти функции можно использовать и в языке С++.

Самый простой механизм ввода - чтение по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). Она имеет следующий прототип (т.е. описание заголовка):

    int getchar(void);

Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).

Оператор вида:

    х = getchar( );

присваивает переменной х очередной вводимый символ. Переменная х должна иметь символьный или целый тип.

Другая функция - putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar( ) имеет прототип:

    int putchar(int);

Объявления getchar( ) и putchar( ) сделаны в заголовочном файле stdio.h, содержащем описания заголовков библиотечных функций стандартного ввода/вывода. Чтобы библиотечные функции стали доступны программе, к ней необходимо подключить данный файл. Подключение осуществляется с помощью директивы препроцессора

    #include <stdio.h>

помещаемой в начало программы.

Заметим, что для функции getchar( ) после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства. Функции getch( ) и getche( ) устраняют их. Они имеют следующие прототипы:

    int getch(void);

    int getche(void);

Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche( ) отображает вводимый символ на экране дисплея, а getch( ) - нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include .

Форматированный вывод данных

Функция printf( ) (прототип содержится в файле stdio.h) обеспечивает форматированный вывод. Ее можно записать в следующем формальном виде:

    рrintf ("управляющая строка", аргумент _1, аргумент _2,...);

Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы.

Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом:

    % [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n

Все параметры в квадратных скобках не являются обязательными.

На месте параметра c_n (символ преобразования) могут быть записаны:

с - значением аргумента является символ;
d или i - значением аргумента является десятичное целое число;
е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23e+2;
Е - значением аргумента является вещественное десятичное число в экспоненциальной форме вида 1.23E+2;
f - значением аргумента является вещественное десятичное число с плавающей точкой;
g (или G) - используется, как е или f, и исключает вывод незначащих нулей;
о - значением аргумента является восьмеричное целое число;
s - значением аргумента является строка символов (символы строки выводятся до тех пор, пока не встретится символ конца строки или же не будет, выведено число символов, заданное точностью);
u - значением аргумента является беззнаковое целое число;
х - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, а, b, с, d, е, f;
X - значением аргумента является шестнадцатеричное целое число с цифрами 0,..., 9, А, В, С, О, Е, F;
р - значением аргумента является указатель;
n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции строки (отображаемой на экране), в которой записана спецификация %n.

Необязательные параметры в спецификации преобразования:

  •  признак минус (-) указывает, что преобразованный параметр должен быть выровнен влево в своем поле;
  •  признак плюс (+) требует вывода результата со знаком;
  •  строка цифр, задающая минимальный размер поля (ширина поля). Здесь может так же использоваться символ *, который тоже позволяет задать минимальную ширину поля и точность представления выводимого числа;
  •  точка (.), отделяющая размер поля от последующей строки цифр;
  •  строка цифр, задающая максимальное число выводимых символов, или же количество цифр, выводимых справа от десятичной точки в значениях типов float или double (точность);
  •  символ F, определяющий указатель типа far;
  •  символ N, определяющий указатель типа near;
  •  символ h, определяющий аргумент типа short int (используется вместе с символами преобразования d, i, о, u, х, Х);
  •  символ l, указывающий, что соответствующий аргумент имеет тип long (в случае символов преобразования d, i, о, u, х, X) или double (в случае символов преобразования е, Е, f, g, G);
  •  символ L, указывающий, что соответствующий аргумент имеет тип long double (используется вместе с символами преобразований е, Е, f, g, G);
  •  символ #, который может встречаться перед символами преобразования g, f, е и перед символом х. В первом случае всегда будет выводиться десятичная точка, а во втором - префикс 0x перед соответствующим шестнадцатеричным числом.

Если после знака % записан не символ преобразования, то он выводится на экран. Таким образом, строка %% приводит к выводу на экран знака %.

Функция printf( ) использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Аргументами могут быть переменные, константы, выражения, вызовы функций; главное, чтобы их значения соответствовали заданной спецификации.

При наличии ошибок, например, в числе аргументов или типе преобразования результаты будут неверными.

Среди управляющих символьных констант наиболее часто используются следующие:

\а - для кратковременной подачи звукового сигнала;
\b - для перевода курсора влево на одну позицию;
\f - для подачи формата;
\n - для перехода на новую строку;
\r - для возврата каретки;
\t - горизонтальная табуляция;
\v - вертикальная табуляция;
\\ - вывод символа \;
\' - вывод символа ' ;
\" - вывод символа ";
\? - вывод символа ?.

Например, в результате вызова функции:

    printf("\tComputer\n%d\n", i);

сначала выполняется горизонтальная табуляция (\t), т.е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (\n), затем будет выведено целое число i по формату %d (десятичное целое), и окончательно курсор перейдет в начало новой строки (\n).

Напечатать строку символов можно и так:

    printf("Это строка символов");

Форматированный ввод данных

Функция scanf( ) (прототип содержится в файле stdio.h) обеспечивает форматированный ввод. Ее можно записать в следующем формальном виде:

    scanf("управляющая строка", аргумент_1, аргумент_2,...);

Аргументы scanf( ) должны быть указателями на соответствующие значения. Для этого перед именем переменной записывается символ &. Назначение указателей будет рассмотрено далее.

Управляющая строка содержит спецификации преобразования и используется для установления количества и типов аргументов. В нее могут включаться:

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

Рассмотрим символы преобразования функции scanf( ) (указываются после символа %):

с - на входе ожидается появление одиночного символа;
d или i - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа int;


D или l - на входе ожидается десятичное целое число и аргумент является указателем на переменную типа long;


е или Е - на входе ожидается вещественное число с плавающей точкой;
f - на входе ожидается вещественное число с плавающей точкой;
g или G - на входе ожидается вещественное число с плавающей точкой;
о - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа int;


О - на входе ожидается восьмеричное целое число и аргумент является указателем на переменную типа long;


s - на входе ожидается появление строки символов;

х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа int;


Х - на входе ожидается шестнадцатеричное целое число и аргумент является указателем на переменную типа long;


р - на входе ожидается появление указателя в виде шестнадцатеричного числа;


n - применяется в операциях форматирования. Аргумент, соответствующий этому символу спецификации, должен быть указателем на целое. В него возвращается номер позиции (после ввода), в которой записана спецификация %n;


u - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned int;


U - на входе ожидается беззнаковое целое число и аргумент является указателем на переменную типа unsigned long;


[ ] - сканирует входную строку для получения символов.

Перед некоторыми символами преобразования могут записываться следующие модификаторы:

F - изменяет указатель, заданный по умолчанию, на указатель типа far;
N - изменяет указатель, заданный по умолчанию, на указатель типа near;
h - преобразует аргумент к типу short int (может записываться перед символами d, i, о, u, х);


l - преобразует аргумент к типу long int (может записываться перед символами d, i, o, u, x);


L - преобразует аргумент к типу long double (может записываться перед символами е, f, g).

Ввести целое число (int a;), символ (char b;) и вещественное число (float t;) можно так:

    scanf("%d", &a);

    scanf("%c", &b);

    scanf("%d%c%f",&a, &b, &t);

3.3 Варианты заданий

Вариант №1.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                 a = 0,3; b =0,9; x = 0,6

Вариант №2.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

    a = 0,3; b =0,9; c = 0,6

Вариант №3.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

             a = 16,5; b = 3,4; x = 0,61

Вариант №4.

Вычислить значение переменной f по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                             m = 2; c =-1; t = 1,2;

             

Вариант №5.

Вычислить значение переменной z по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

       m = 2; c =   -1; t = 1,2; b = 0,7

             

Вариант №6.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

 x = 2; z = -1; t = 1,2;

Вариант №7.

Вычислить значение переменной z по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                                    m=0,7; x=1,7;

             

Вариант №8.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

         x=1,7; a=0,5; b=1,08

             

Вариант №9.

Вычислить значение переменной u по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                              a = 0,5; b = 2,9; x =0,3

Вариант №10.

Вычислить значение переменной f по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

           a = 0,5; b = 2,9; x =0,3

             

Вариант №11.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

y=             c = 0,5; x = 4,9; d =0,33

Вариант №12.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

         a = 1,5; b =15,5; x = -2,9

Вариант №13.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

              b = 1,825; a = 18,225; t = -3,298

               

Вариант №14.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

      a = -0,1; b = 21,6; t = 0,47

Вариант №15.

Вычислить значение переменной b по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                       х = 1,426; у = -1,22; z = 3,5

Вариант №16.

Вычислить значение переменной Q по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                                   a = -16,5; b = 3,4; x = 0,61

Вариант №17.

Вычислить значение переменной a по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                                    х = 1,42; у = -1,22; z = 3,5

Вариант №18.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

x = 1,825; у = 18,225; z = -3,298

Вариант №19.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

             a = -0,5; b = 1,7; t = 0,44

                         

Вариант №20.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

               a = -0,5; b = 1,7; t = 0,44

Вариант №21.

Вычислить значение переменной t по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

             a = 1,5; b =15,5; x = -2,9

Вариант №22.

Вычислить значение переменной s по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                a = 16,5; b = 3,4; x = 0,61

Вариант №23.

Вычислить значение переменной R по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

     a = 0,7; b = 0,05; x = 0,5

            

Вариант №24.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

         a = 1,1; b = - 0,004; x = 0,2

          

Вариант №25.

Вычислить значение переменной f по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

              m = 2; c = -1; t = 1,2; b = 0,7

Вариант №26.

Вычислить значение переменной z по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

  m = 0,5; c = -10; t = 2,3; b = 0,5

           

Вариант №27.

Вычислить значение переменной y по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                 a = 0,3; b =0,9; x = 0,6

         

Вариант №28.

Вычислить значение переменной R по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

                 a = 0,1; b =0,8; x = 0,7

         

Вариант №29.

Вычислить значение переменной x по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

               a = -1,1; b = 0,014; x = 0,7

          

Вариант №30.

Вычислить значение переменной S по заданной расчетной формуле и набору исходных данных. Значения исходных данных вводить с клавиатуры. На печать вывести значения вводимых исходных данных и результат вычислений, сопровождая вывод наименованием выводимых переменных.

     a = 0,7; b = 0,05; x = 1,5

            

Контрольные вопросы

  1.  Каковы назначение и порядок выполнения операции присваивания?
  2.  Перечислите арифметические операции языка С.
  3.  В чем отличие постфиксной и префиксной форм операций инкремента и декремента?
  4.  Какие библиотечные функции вы вызываете в данной программе? Какие системные библиотеки при этом используются? В чем заключается разница между функциями и операциями?
  5.  Опишите назначение и синтаксис функций scanf()  и printf().   

       

PAGE  25


 

А также другие работы, которые могут Вас заинтересовать

8996. Философия Средневековья. Теодицея: причины возникновения зла в мире 263 KB
  Философия Средневековья. Основная часть. О философии. Поиск Бога и доказательство Его бытия. Теодицея: причины возникновения зла в мире. Теория познания: вера и разум. Приложение. Библия: Первая книга Моисеева. Бытие. Время и вечность. О сущем и сущ...
8997. Философия Нового времени и Просвещения. Научное познание: методология рационализма 140.5 KB
  Философия Нового времени и Просвещения. Основная часть. Новоевропейская картина мира. Рене Декарт: Научное познание: методология рационализма. Интеллектуальная интуиция. Френсис Бэкон: Цель познания. Экспериментальный метод научного познания. Дж. Ло...
8998. Немецкая классическая философия. Нравственная философия 234.5 KB
  Немецкая классическая философия. Основная часть. И. Кант: Теория познания. Нравственная философия. Г.В.Ф. Гегель: О философии. Наука логики. О природе деалектического. Всемирная история. Основная часть. В конце XVIII - XIX вв. в Германии насту...
8999. Философия материализма. Сущность человека и критика религии 403 KB
  Философия материализма. Основная часть. Фейербах Л. О философии. Сущность человека и критика религии. К. Маркс, Ф. Энгельс. О философии. Природа и сущность человека. Отчужденный труд. Материалистическое понимание истории. Теория коммунистического ра...
9000. Философия жизни. О нашем поведении относительно миропорядка и судьбы 162 KB
  Философия жизни. Основная часть. А. Шопенгауэр О том, что есть индивид. О нашем поведении относительно миропорядка и судьбы. Ф. Ницше Смерть Бога. Нигилизм. Низложение христианства. Жизнь и воля к власти. Вечное возвращение. сверхчеловек...
9001. Философия экзистенциализма. Ж.П. Сартр. Экзистенциализм - это гуманизм 245.5 KB
  Философия экзистенциализма. Основная часть. Ж.П. Сартр. Экзистенциализм - это гуманизм. К. Ясперс. Человек. М. Бубер. Я и Оно. М. Хайдеггер. Отрешенность. Приложение. Основная часть. Экзистенциализм (от позднелат. Existentia - существ...
9002. Философия и мировоззрение. Специфика философии 39 KB
  Философия и мировоззрение. Специфика философии Философия - учение о мире в целом, об общих принципах и закономерностях его бытия и познания. Органическое соединение в философии двух начал - научно-теоретического и практически-духовного...
9003. Предмет, структура и функции философии, всеобщие свойства и связи 43.5 KB
  Предмет, структура и функции философии Предметом философии являются всеобщие свойства и связи (отношения) действительности - природы, общества, человека, отношения объективной действительности и субъективного мира, материального и идеального, б...
9004. Философия Древнего Востока. Проблема совершенного человека 38.5 KB
  Философия Древнего Востока. Проблема совершенного человека Буддизм - религиозно-философское учение, возникшее в древней Индии в VI – V вв. до н. э. и превратившееся в ходе его развития в одну из трех - наряду с христианством и исламом...