Начала программирования на языке Си, страница 9

Меньше терзают и беды и муки,

Если вы крепко берете их в руки.

б)  Я хотел бы жить и умереть в Париже, если б не было такой земли –

Москва.

2.Для вывода данных какого типа применяются спецификаторы d, u,f?

3. Что означает %5d, %3.0f, %5u?

4. Найдите ошибки или некорректности в фрагменте программы

int   in, k1=1.87;

float  razmer=500;

………………………………………

printf(“\n in=%5.1f \t k1=6d”, in,razmer);


7. ФУНКЦИЯ ВВОДА  ДАННЫХ SCANF()

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

scanf (форматная_строка, список_адресов_аргументов);

Форматная строка ограничивается двойными кавычками и включает управляющие символы и спецификации преобразования данных. Список аргументов функции scanf представляет собой  перечисление адресов соответствующих переменных.

Примеры использования функции scanf():

a) scanf(“%d”, &i);

Дойдя до этого места в программе, машина запросит ввести целое десятичное число, имеющее идентификатор i.

b) scanf(“%f%f%u”, &z, &x, &n);

Здесь машина запросит ввод трех чисел, первые два z и x имеют вещественный тип float, а число n – целое десятичное без знака. Знак & перед именами переменных указывает, что для ввода указываются не имена переменных а их адреса.

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

d – для целых чисел (типа int);

u – для целых десятичных чисел без знака (тип unsigned int);

f – для вещественных чисел (тип float);

e – для вещественных чисел (тип float);

hd – для значений типа short int;

ld – для long int;

lf или le – для double;

f и Le для long double.

Пример:

Пусть в программе описаны переменные x и r как действительные переменные типа double, а v – как тип float.

double h,r;    float v;

Тогда для их ввода следует использовать функцию scanf следующего вида:

scanf(“%lf%lf%f”,&h,&r,&v);

Контрольные вопросы и задания

1 В каком разделе стандартных библиотек языка Си хранятся функции ввода и вывода.?

2. Какие спецификаторы применяются в функции scanf для описания переменных целого типа? Действительного типа?

3. Найдите ошибки в следующих фрагментах программ:

a) double ytd=69.0005;

…………………

scanf(“%f”, &ytd);

b) float  err;

…………………

scanf(“%i”, err);

c) float  ocr;

…………………

scanf(“\n ocr=%5.2f”, &ocr);

d) int Kj  double  xy,yz;

…………………

scanf(“%i, %f,%lf”, &xy,&Kj,&yz);


8. ОПЕРАТОРЫ ЯЗЫКА СИ

8.1. Определение операторов. Операторы преобразования данных

Оператор в программе – это команда, которая побуждает исполняющее устройства (ЭВМ) совершать некоторое действие над данными – операндами или управлять работой программы.

Ранее были рассмотрены операторы простого присваивания и составного присваивания, арифметические операторы.

i++;   /* арифметическое выражение – оператор */

x*=i;  /* оператор присваивания */

i=x-4*i;   /* оператор простого присваивания */

Эти операторы относятся к операторам преобразования данных, они так же как и произвольные выражения завершаются символом ‘;’.

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

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

Контрольные вопросы и задания

1. Дайте определение оператора и операнда.

2. Какие операторы называются составными.

8.2. Условный оператор

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

Сокращенная форма условного оператора или оператора ветвления    (оператора, реализующего базовую алгоритмическую структуру ветвления или условного перехода) имеет следующую форму:

if (выражение_условия) оператор;