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

Функция scanf

Читайте также:
  1. F52 Половая дисфункция, не обусловленная органическим расстройством или заболеванием
  2. Ангармоничность колебаний. Энергия диссоциации. Функция Морза.
  3. Арифметические операции над непрерывными функциями
  4. Баклей-Леверетта функциясы келесі нөмірдегі формуламен анықталады
  5. Билет №11. Рыночное предложение и его факторы. Функция предложения. Предложение и величина предложения. Цена предложения.
  6. Биологические и физиологические особенности крупного рогатого скота. Строение и функция молочной железы. Основные породы крупного рогатого скота молочного направления.
  7. Внешнеэкономическая функция центрального банка.

 

Предназначена для ввода данных в заданном формате. Обращение имеет вид:

Scanf(nf,&a1,&a2,...)

Здесь nf - форматная строка; &a1,&a2,... - список ввода - указатели на значения вводимых переменных a1, a2,.....

Примечание. Указатель на значение переменной - это адрес этой переменной, а не ее текущее значение. Чтобы указать на адрес переменной, надо перед именем переменной поставить символ операции &. Например, &dозначает адрес переменной d, а не значение, которое эта переменная имеет в данный момент. Т. о., если надо ввести значения переменных, например, a, b, c, то в списке ввода следует записать &a, &b, &c - указатели на значения переменных.

Выполняя функцию scanf(nf,&a1,&a2,...), программа приостанавливает свою работу и ждет от пользователя ввода последовательности символов. После ввода запрашиваемой информации следует нажать клавишу Enter (курсор перейдет к началу следующей строки экрана). Функция scanf прекращает прием символов во внутренний буфер и переходит к обработке ввода в соответствии с форматной строкой. При этом, по спецификации %s функция scanf передает в программу все символы до первого разделителя, в том числе и пробела. Оставшиеся в буфере символы будут поступать в программу при следующих обращениях к функции scanf. Поэтому перед очередным обращением к функции scanf выполняется очистка буфера stdin фукцией ffluch(stdin).

Пример 3. Ввести целое положительное двузначное число i1 и целое отрицательное трехзначное число i2. Вывести в одну строку i1, i2 без разделителя, затем "пробел" и число i2. В следующую строку вывести i2, прижатое к левому краю поля в 7 позиций, "пробел", i2, прижатое к правому краю поля в 7 позиций, "пробел", i1 в поле из 5 позиций с выводом нулейв левые лишние позиции поля, "пробел", i1 в поле из 5 позицийсо знаком "+", "пробел", i2 в поле длиной 5 с пробелом вместо знака "+", "пробел", i2 в одну позицию, "пробел", i1 - в 4 позиции.

/* Форматированный ввод-вывод целых чисел */

#include <stdio.h>

#include <conio.h>

main()

{

int i1,i2;

clrscr();

printf("Введите положительное и отрицательное целые числа\n");

scanf("%i %d",&i1,&i2);

printf("Числа %d и %d в разных форматах:\n",i1,i2);

printf("*********\n");

printf("%d%i %d\n%-7i %7d %05d %+5d % 5d %1d %4i\n",

i1,i2,i2, i2, i2, i1, i1, i1, i2,i1);

printf("******* ******* ***** ***** ***** * ****\n");

fflush(stdin);

getchar();

return(0);

}

Ниже приводится вид экрана (окна Output) после выполнения программы (серым цветом выделены данные, введенные пользователем):

 

Введите положительное и отрицательное целые числа

12 -567

Числа 12 и -567 в разных форматах:

*********

12-567 -567

-567 -567 00012 +12 12 -567 12

******* ******* ***** ***** ***** * ****

 

Пример 4.

/* Форматированный ввод-вывод */

#include <stdio.h>

#include <conio.h>

main()

{

int i1,i2,i3;

char c1, s1[10];

float f1,e1;

clrscr();

printf("Введите 3 целых числа\n");

scanf("%d%i%d",&i1,&i2,&i3);

printf("Введены числа:\n%d %d %i\n",i1,i2,i3);

fflush(stdin);

printf("Введите символ, число, строку, число\n");

scanf("%c %f %15s %e",&c1,&f1,&s1,&e1);

printf("Введены:\n");

printf(" символ %c\n число %7.3f\n строка %15s\n число %10.2e\n",

c1, f1, s1, e1);

fflush(stdin);

getchar();

return(0);

}

 

Ниже приводится вид экрана (окна Output) после выполнения программы (серым цветом выделены данные, введенные пользователем):

Введите 3 целых числа

55 -4 3

Введены числа:

55 -4 3

Введите символ, число, строку, число

r -5.1 qwert 0.00356

Введены:

символ r

число -5.100

строка qwert

число 3.56e-03

Если ввести строку, содержащую пробел, то выведена будет только часть строки до пробела. Вторая часть строки будет преобразована в соответствии со спецификацией %10.2e в числовое значение 2.76e-40 и присвоена переменной e1, что и отображено в окне Output:

Введите символ, число, строку, число

к -5.1 qwe rt 0.00356

Введены:

символ к

число -5.100

строка qwe

число 2.76e-40

 

Пример 5. С помощью операторов ввода - вывода 1) ввести и напечатать числовые значения переменных. Первую группу чисел представить в спецификации i (или d), вторую - в f, третью - в е.

Группа чисел
1 2 3
P=-3 N=-62.5 E=-3.510-3
J=4600 H=4.8103 Y=745000

2) выдавать на экран соответствующие подсказки, вводить перечисленные в условии данные, а затем печатать введенную информации с необходимыми пояснениями: марка материала (до 8 символов), температура начала штамповки в 0С, минимальная и максимальная температура конца штамповки в 0С (два числа), дата ввода данных, фамилия пользователя.

/* Пример для лабораторной работы №2 */

#include <stdio.h>

#include <conio.h>

main()

{

int P,J,T,TN,TK;

float N,H,E,Y;

char M[8],D[10],F[20];

puts("Введите два целых числа");

scanf("%d %d",&P,&J);

puts("Введите четыре вещественных числа");

scanf("%f %f %f %f",&N,&H,&E,&Y);

printf("Введите марку материала (до 8 символов) ");

fflush(stdin);

gets(M);

fflush(stdin);

puts("Введите температуру начала штамповки");

scanf("%d",&T);

puts("Введите минимальную и максимальную температуры конца штамповки");

scanf("%d %d",&TN,&TK);

fflush(stdin); ‑

puts("Введите текущую дату"); _

gets(D); _

puts("Введите свою фамилию"); _

gets(F); _

puts("Были введены:"); _

printf("Целые числа P=%2d J=% 4d\n",P,J); _

printf("Вещественные числа N= %5.2f H= %e E= %e Y= %f\n",N,H,E,Y); _

printf("Марка материала: %s\n",M); _

printf("Температура начала штамповки: %d град.C\n",T);

printf("Мин. и макс. температуры конца штамповки: %d град.C %_%d град.C %\n",

TN,TK);

printf("Работу выполнил %s %s\n",F,D); _

fflush(stdin); _

getchar(); _

return(0); _

} _

_

Функции atoi, atol, atof

Часто программисты избегают пользоваться функцией scanf. Если данные, прочитанные с помощью scanf, не соответствует форматной строке, то функция может вести себя непредсказуемо. Можно вводить данные с помощью функции gets. Данные представляются в виде строки. Затем нужно вызвать функцию atoi, atol или atof для преобразования строки в целое, длинное целое или вещественное число, соответственно. Указанные функции содержатся в файле stdlib.h

Пример 6.

/* Пример использования функций atoi и atof */

#include <conio.h>

#include <stdlib.h>

main()

{

char s1[10], // Строка для целого числа

s2[20]; // Строка для вещественного числа

int i;

float f;

printf("Введите целое число ");

gets(s1);

printf("Введите вещественное число ");

gets(s2);

i=atoi(s1); // Преобразование строки в целое число

f=atof(s2); // Преобразование строки в вещественное число

printf("i=%d f=%f\n",i,f);

fflush(stdin);

getchar();

return(0);

}

Результат выполнения программы (серым цветом выделены введенные пользователем строки):

Введите целое число -231

Введите вещественное число 0.035647

i=-231 f=0.035647


 


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


<== предыдущая страница | следующая страница ==>
Флаг][ширина][.точность][размер]тип| Предмет и задачи курса

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