На этом шаге мы познакомимся с основными возможностями функции 
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.