Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭВМ 1-3 лабы.rtf
Скачиваний:
32
Добавлен:
01.04.2015
Размер:
2.67 Mб
Скачать

1.6. Оператор простого присваивания

Оператор присваивания придает переменной конкретное значение, например:

x=2008; y=x+1; z=sin(M_PI/x);

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

Общая схема оператора присваивания:

<имя>=<выражение>;

Все приведенные примеры укладываются в эту схему, т.к. и постоянные величины, и переменные являются частным случаем выражения.

1.7. Операторы ввода и вывода данных

Программы форматированного ввода и вывода содержатся в стандартной библиотеке и доступны после включения файла <stdio.h>. Оператор

printf(format_string [,arguments…]);

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

Спецификация формата в общем виде

%[flags][width][.precision][F|N][h|l|L] type

Спецификации преобразования (type)

Символ

Тип аргумента

Выводной формат

d

целое

десятичное целое со знаком

i

целое

десятичное, восьмеричное, шестнадца-теричное целое со знаком

u

целое

десятичное целое без знака

o

целое

восьмеричное целое без знака

x

целое

шестнадцатеричное целое без знака, использующее a,b,c,b,d,e,f

X

целое

шестнадцатеричное целое без знака, использующее A,B,C,D,E,F

f

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

значение со знаком в формате

[-]dddd.dddd, d – десятичная цифра

e

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

[-]d.dddde[+|-]ddd

E

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

[-]d.ddddE[+|-]ddd

G

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

e или f в зависимости от того, какой из них компактен для данного значения

G

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

E или F

c

символ

одиночный символ

s

строка

cимволы печатаются до первого символа ’\0’ или до тех пор пока не будет напечатано precision символов

p

Значение вида

xxxx:yyyy

(сегмент:смещение)

указатель на указатель far на void.

x,y – прописные шестнадцатеричные цифры.

Флаг

Действие флага

По умолчанию

-

выравнивание по левой границе

выравнивание по правой границе

+

со знаком

знак только для отрицательных

пробел

добавляет префикс пробел

пробел не добавляется

#

если o,x,X добавляет префикс: 0, 0x, 0X

если e,E,f выводное значение будет содержать десятичную точку во всех случаях

нет префикса

Префиксы F и N должны использоваться только с символами типа ”s” и ”p”, поскольку они относятся к аргументам, которые передают указатели:

F –используется для печати значений, которые были объявлены как far в малой модели памяти;

N - используется для печати значений near в средней, большой и сверхбольшой моделях памяти.

Префиксы h и l используются для указания того, что тип аргумента short и long (или double), а L – long double.

Пример

#include <stdio.h>;

#include <math.h>; // подключаем математические функции

void main()

{ int a, b, s; float x,y, pi;

printf("a b="); scanf("%i%i",&a,&b);

s=a+b;

printf("s=%i\n",s);

printf("s=%6i\n",s); // длина поля вывода=6

pi=M_PI;

printf("pi=%e\n",pi);

printf("pi=%E\n",pi);

printf("pi=+%e\n",pi); // печать со знаком

printf("pi=%8.3f\n",pi); // длина поля вывода=8, точность=3

printf("pi=%.3f\n",pi); // точность=3

}

Если мы введем a=17 и b=5, то на экране получим

s=22

s=ᴗᴗᴗᴗ22 // печатается в 6 позициях выравнивая по правой границе

pi=3.141593e+00

pi=3.141593E+00

pi=+3.141593e+00

pi=ᴗᴗᴗ3.142

pi=3.142

Здесь символы ᴗ означают пробел.

Аналогично функция

scanf(format_string [,arguments…]);

осуществляет ввод данных из стандартного ввода и преобразование их во внутреннее представление в программе.

Строка, управляющая форматом ввода, может состоять из следующих элементов:

  • пробельных символов: пробела (‘ ‘), символа табуляции (‘\t’) или новой строки (‘\n’). Пробельный символ указывает на то, что из входного потока надо читать, но не сохранять все последовательные символы вплоть до следующего непробельного символа. Один пробельный символ в строке управления форматом соответствует любому числу или комбинации пробельных символов во входном потоке;

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

  • спецификации формата, которая имеет следующий вид:

%[*][width][F|N][h|l|L]type

Спецификации преобразования функции scanf практически полностью совпадают со спецификациями преобразования функции printf.

Аргументами программы ввода могут быть только простые переменные или имена символьных массивов для ввода символьных строк, причем перед именами простых переменных обязательно должен стоять знак амперсанд (& - операция получения адреса объекта).

При выполнении оператора scanf программа останавливается и ждет, пока нужное количество чисел не будет введено с клавиатуры. Вводимые числа разделяют пробелами или нажатием клавиши Enter. Заканчивается ввод всегда нажатием клавиши Enter.

Например, после выполнения оператора scanf(”%i%f%f”,&a,&b,&c), если на клавиатуре набраны числа 3 4.0 -5.025, переменные a, b, c примут значения a=3, b=4, c=-5.025.

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

Звездочка (*), следующая за символом процент, подавляет присваивание следующего входного поля, которое интерпретируется как поле указанного типа. Поле читается, но не сохраняется.

Поле длина (width) (положительное десятичное число) задает максимальное число символов, которое может быть прочтено из входного потока. Из входного потока читается заданное количество символов, если только раньше не встретится пробельный символ или символ, который не может быть преобразован в соответствии с заданным форматом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]