На этом шаге мы познакомимся с основными возможностями функции
scanf().
Мы рассмотрим здесь лишь основные особенности применения функции scanf(). Так же, как и для функции printf(), для функции scanf() указываются управляющая строка и следующий за ней список аргументов.
Обращение к этой функции имеет вид:
scanf (Управляющая_строка,&Имя1,&Имя2,...,&ИмяN);,
где: 1) Имя1,Имя2,...,ИмяN - это имена переменных, значения
которых
надо ввести. Смысл символа "&" перед именем будет раскрыт
ниже;
2) Управляющая_строка - это строка символов, которая задает
количество и типы вводимых переменных. Делается это так: в формате
указывается
символ %, за которым следует буква, определяющая
тип вводимой
переменной.
Сочетание %буква является спецификацией преобразования. При вводе мы будем пользоваться следующими спецификациями:
Спецификации преобразования должны соответствовать количеству и типу вводимых переменных.
К счастью, при применении функции scanf() мы ничего не должны знать о смысле символа "&". Необходимо запомнить только два правила.
Функция scanf() использует некоторые специальные знаки (пробелы, символы табуляции и символ "новая строка") для разбиения входных символов на отдельные поля. Она согласует последовательность спецификаций преобразования с последовательностью полей, опуская упомянутые специальные знаки между ними.
При обращении к функции scanf() выполнение программы приостанавливается, и нужно ввести значения для указанных переменных, после чего работа программы продолжается.
#include<stdio.h> main () { int a,b,c,d,e; /* При вводе каждое число должно */ /* отделяться от другого пробелом */ scanf ("\n %d%d%d%d%d",&a,&b,&c,&d,&e); printf ("\n %d %d %d %d %d",a,b,c,d,e); }
#include<stdio.h>
main ()
{
int st,oc;
printf ("Сколько лет Вы изучаете программирование?");
scanf ("%d",&st);
printf ("\nКакую оценку Вы получили на экзамене?");
scanf ("%d",&oc);
printf ("\nДля того, чтобы прилично изучить язык C++,
\nВам понадобится %d - %d лет.\n",100/2/st/oc);
}
#include<stdio.h> main () { int data,month,year; char name[15],town[15]; /* ---------------------------------------- */ printf ("Как вас зовут? "); scanf ("%s",name); printf ("Укажите дату, месяц и год вашего рождения.\n Дата: "); scanf ("%d",&data); printf ("Месяц (числом): "); scanf ("%d",&month); printf ("Год: "); scanf ("%d",&year); printf ("В каком городе? "); scanf ("%s",town); printf ("Вот мы о вас и узнали кое-что. А именно... \n"); printf ("Вас зовут %s \n",name); printf ("Вы родились в городе %s (%d.%d.%d)", town,data,month,year); }
Результат работы программы:
Как вас зовут? Иван Укажите дату, месяц и год вашего рождения. Дата: 14 Месяц (числом): 10 Год: 1986 В каком городе? Свердловск Вот мы о вас и узнали кое-что. А именно... Вас зовут Иван Вы родились в городе Свердловск (14.10.1986)
Остановимся более подробно на содержимом управляющей строки. Она содержит спецификации преобразования, которые используются для непосредственной интерпретации входной последовательности.
Управляющая строка может содержать:
Спецификация преобразования управляет преобразованием очередного входного поля. Результат обычно помещается в переменную, на которую ссылается соответствующий параметр. Однако, если присутствует символ "*", то входное поле просто пропускается, и никакого присваивания не производится.
Перечислим основные символы преобразования:
#include<stdio.h>
main ()
{
int i,j,k;
printf ("Вводи числа i, j, k\n");
scanf ("%d %*d %d %d",&i,&j,&k);
printf ("i=%d, j=%d, k=%d,\n",i,j,k);
printf ("Вводи числа i, j, k\n");
scanf ("%d %d %d",&i,&j,&k);
printf ("i=%d, j=%d, k=%d,\n",i,j,k);
}
Результат работы программы:
Вводи числа i, j, k 1 2 3 4 i=1, j=3, k=4, Вводи числа i, j, k 1 2 3 4 i=1, j=2, k=3,
Мы привели несколько примеров использования функции scanf().
На следующем шаге мы продолжим рассмотрение примеров использования
основных типов,
начатых на шаге 6.