Программирование на языке си ( с ) | C Sharp (Си шарп) с нуля. Сортировки | Массивы | Функции

Функция ( оператор ) scanf в си | Cпецификаторы формата | Операции сравнения

Как хорошо когда все данные даны, и ничего вводить не надо. Но, поверьте мне, так практически не бывает. Вспомните школу, когда вы измеряли определенные вещи, а потом полученные значения вставляли в нужные формулы.

   scanf

В языке Си кроме функции вывода printf, существует так же функция scanf для ввода. Вот функцию scanf мы щас и рассмотрим подробнее:

int i;
scanf("%d", &i);

Вроде очень похоже на функцию printf. Так же есть в двойных кавычках спецификатор формата, но разница как раз находится во второй части функции. Обратили внимание на появление знака (&)? Так вот этот знак означает взятие адреса. Щас объясню для чего это нужно.

Мы должны записывать введенное значение не куда-то там, а именно по адресу, по которому находится наша переменная. Т.е. без знака (&) наше введенное значение попадет во все места, кроме того что нам нужно. Поэтому всегда, когда вам нужно вводить значения с клавиатуры, ставьте перед переменной знак взятия адреса (&).

   Спецификаторы формата

Ну теперь пробежимся по спецификаторам формата:

  1. %d - прочитать целое число
  2. int i;
    scanf ("%d", &i);

  3. %o - прочитать восьмеричное число
  4. int i;
    scanf ("%o", &i);

  5. %x - прочитать шестнадцатеричное число
  6. int i;
    scanf ("%x", &i);

  7. %e(%f) - прочитать вещественное число
  8. float t;
    scanf ("%f", &t);

  9. %с - прочитать символ
  10. char ch;
    scanf ("%c", &ch);

  11. %s - прочитать строку
  12. char *str;;
    scanf ("%s", str);

    Пока не вникайте в работу со строками. Почему нету знака взятия адреса? Эту тему мы рассмотрим чуть позднее.

   Операции сравнения

В компьютер изначально заложена булева логика, т.е. все построено на 0 и 1. Если не понимаете о чем речь, то пересмотрите фильм Матрица, где каждая зеленая заставка как раз состояла из этих двух магических цифр.

Конечно, 0 и 1 это хорошо, но нам нужен логический смысл, поэтому в логических операциях 0 - это FALSE, а 1 - это TRUE. Эти понятия TRUE и FALSE тесно связанны с операциями сравнения. Для начала приведем всевозможные операции сравнения:

операция значение пример
== равенство a == b
!= не равно a != b
> больше a > b
< меньше a < b
<= меньше или равно a <= b
>= больше или равно a >= b

В принципе, самая распространенная ошибка, которую делают новички - это путают операцию присваивания (=) с операцией сравнения (==). Это абсолютно разные вещи. Но у всех на первых порах кодирования возникают ошибки именно на этой почве, поэтому будьте внимательнее.

Задания:

  1. Для изучения функции scanf повводите переменные разного типа по 4 штуки каждого
  2. Даны 3 числа: a = 5, b = 4, c = 4. С помощью операций сравнения и функции printf повыводите результаты. Пример:

    printf("%d %d\n", a > b, a > c );

  3. Для понимания булевой алгебры логики постарайтесь дома у какого-нибудь предмета найти два состояния (0 и 1). Например, сердце: удар - 1, молчание - 0

Предвидущие уроки:

  1. Переменные
  2. Арифметические операции
  3. Функция printf

Следующие уроки:

  1. Первая программа на языке си ( с )
При копировании ( использовании ) материала размещайте ссылку на сайт www.mir-koda.ru