Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Использование функции printf( ) и scanf( ).

График выполнения и сдачи заданий по дисциплине | Тема 3. Управляющие структуры. Структуры повторения While, do – While, For. Управляющие операторы break и continue. | Тема 4. Массивы. Разработка программ с использованием одномерных и двумерных массивов. | Тема 6. Классы памяти и разработка программ. | Тема 7. Указатели в Си. | Тема 8. Использование указателей при обработке одномерных и двумерных массивов. | Тема 9. Символы и строки в Си. | Тема 11. Структуры данных в Си. | Тема 12. Динамические структуры данных. | Тема 13. Работа с файлами в Си. |


Читайте также:
  1. AЧX и ФЧХ передаточной функции цепи.
  2. II. Функции школьной формы
  3. Self и его функции.
  4. Базовые пресуппозиции НЛП и использование ресурсных состояний
  5. В то же время, старение тела - это прогрессирую­щий ожог химическими веществами, который приводит к повреждению желез и нарушению их функций, вплоть до их полой дисфункции.
  6. в части, реализуемой с использованием ДОТ
  7. Валидность и использование мысленных образцов эксперимента

Общий вид функции printf():

printf(<строка формата>, <объект>, <объект>…);

Строка формата ограничивается двойными кавычками. Перед выводом printf заменяет все дополнительно перечисленные объекты в строке в соответствии со спецификациями формата, указанными в сомой строке. Спецификации формата начинаются с символа процента (%) и сопровождаются одной буквой, обозначающей тип данных и способ их преобразования. Сами объекты могут быть переменными, константами, выражениями, вызовами функций. В таблице 1 приведены спецификации формата, используемые в языке Си.

#define PI 3.14159

#include <math.h>

main ()

{ float S, r;

printf (“введите радиус круга \ n”);

scanf (“%f”, &r);

S=PI*r*r;

printf (“площадь круга = %f \n”, S); }

Таблица 1 – Спецификации формата

Спецификации формата Тип выводимой информации
%d Десятичное целое число
Один символ
%s Строка символов
Число с плавающей точкой, экспоненциальная запись
%f Число с плавающей точкой, десятичная запись
%g Используется вместо записей % f или % е, если он короче
%u Десятичное целое число без знака
Восьмеричное целое число без знака
Шестнадцатеричное целое число без знака

Применение функции scanf ()

Общий вид функции scanf ():

scanf (<cтрока формата>, <адрес>, <адрес>, …);

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

1. Отсутствует спецификация %g.

2. Спецификации %f и %e эквивалентны.

3. Для чтения целых чисел типа short применяется спецификация % h.

Заметим:

1. При записи адреса используется операция адреса (&) для передачи адресов переменных.

2. При вводе значения строковой переменной символ & не пишется.

Пример программы:

main ()

{ char name[30];

printf (“Введите имя автора”);

scanf (“%s”, name);

printf (“Автором программы является % s\n”, name); }

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

Основные операции в языке Си.

Самой общей операцией является присваивание. В языке Си оператор присваивания записывается V=A;

где V – переменная, A – выражение.

Можно использовать последовательные присваивания, например sum=a=b;

Присваивание производится справа налево, то есть b будет присвоено a, которая в свою очередь будет присвоена sum, так что все три переменные получают одно и тоже значения (а именно; начальное значение b).

Язык Си поддерживает обычный набор арифметических операций:

* – умножение, / – деление, % – операция деления по модулю, + – сложение, – – вычитание.

Операция деление по модулю используется в целочисленной арифметике. Ее результатом является остаток от деления целых чисел (20 % 3 = 2).

Операции + и - имеют приоритет ниже, чем приоритет операций *, / и %, а у них он, в свою очередь, ниже приоритета унарного минуса.

Рассмотрим пример:

main()

{ int m1, m2;

m1=m2= -(15+3)*5+(11+9*(8+3)) – 266%16; /* m1=m2=10;

(операция выполняется справа налево) */

printf (“m1 = %d\n”, m1);

printf (“%d\n”, m2/3); }

Операции увеличения и уменьшения: ++ и - -.

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

Пример 1: Пусть l=10;

тогда

x=l++; присвоит переменной x значение 10,

x=++l; присвоит переменной x значение 11.

В двух случаях значение l станет равным 11.

Пример 2:

sum=a+b++;

sum=a+ ++b;

b++ – постфиксная форма: переменная b изменяется после того, как ее значение используется.

++b – префиксная форма: переменная b изменяется перед тем, как ее значение используется.

В первом случае: “сложить a и b, присвоить результат sum и увеличить b на единицу.

Во втором случае: “увеличить b на единицу, сложить a и b, и присвоить результат sum”.

Пример 3:

main()

{ int a, b, s=0;

a=b=10; s=a+b++;

printf(“%d %d \n”, s, b);

s=a+ ++b;

printf (“%d %d \n”, s, b); }

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

Преобразование типов

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

1. Если операция выполняется над данными двух различных типов, обе величины приводятся к «высшему» из двух типов. Этот процесс называется «повышением» типа.

2. Последовательность имен типов, упорядоченных от «высшего» типа к «низшему» выглядит так: double, float, long, int, short и char. Примечание ключевого слова unsigned повышает ранг соответствующего типа данных.

3. В операторе присваивания конечный результат вычисления выражения в правой части приводится к типу переменной, которой должно быть присвоено это значение. Данный процесс может привести к «повышению» или «понижению» типа (во втором случае величина приводится к типу данных, имеющему более низкий приоритет).

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

Пример:

main ()

{ char ch; int i; float fl;

fl=i=ch=’A’;

printf (“ch=%c, i=%d, fl=%6.2f\n”,ch, i, fl);

ch=ch + f; (65+1=66 =>код символа ''В''=> в ch)

i=fl+2*ch; (66*2+65.00=>132.00+65.00=>197.00=>197)

fl=2.0*ch+c; printf (''сh=%с, i=%d, fl=%62f)n'',ch, i, fl); }

Результат:

ch=A, i=65, fl=65.00

ch=B, i=197, fl=329.10

Еще один вид преобразования типов. Для сохранения точности вычислений при арифметических операциях все величины типа float преобразуются в данные типа double. Это существенно уменьшает ошибку округления. Конечный результат, преобразуется обратно в число типа float, если это диктуется соответствующим оператором описания.


Дата добавления: 2015-11-04; просмотров: 109 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Типы данных в языке Си.| Операторы языка Си

mybiblioteka.su - 2015-2024 год. (0.015 сек.)