Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
part1.doc
Скачиваний:
2
Добавлен:
14.04.2019
Размер:
337.41 Кб
Скачать

Использование gets() и getch() для ввода

Использование scanf(), однако, порождает другую проблему. Снова выполните программу, но теперь введите ваше имя и фамилию. Заметьте, что программа использует в своем ответе только имя. Почему? Потому, что введенный вами после имени пробел сигнализирует scanf() о конце вводимой строки.

Возможны два способа решения этой проблемы. Вот первый из них:

#include <stdio.h>

main ()

{

char first[20], middle[20], last[20];

printf("Как Вас зовут:");

scanf("%s %s %s",first, middle, last);

printf("Дорогой %s, или вам приятней %s?\n", last, first);

}

Это означает, что имеется три компоненты имени; в примере функция scanf() не пойдет дальше, пока вы действительно не введете три строки. Но что, если необходимо прочитать полное имя, как одну строку, включая пробелы? Вот второй способ решения:

#include <stdio.h>

main ()

{

char name [60];

printf("Как вас зовут: ");

gets (name);

printf ("Привет, % s\n", name);

}

Функция gets() читает все, что вы набираете до тех пор, пока не нажмете Ввод. Она не помещает Ввод в строку; однако в конец строки добавляет нулевой символ (‘\0’).

Наконец, есть еще функция getch(). Она читает единственный символ с клавиатуры, не выдавая его на экран (в отличии от scanf() и gets()). Заметим, что у нее нет параметра ch; getch() является функцией типа char, ее значение может быть непосредственно присвоено ch.

Условные операторы

Имеется несколько операторов, о которых мы еще не говорили: условные и логические операторы. При этом возникают некоторые непростые моменты в выражениях, которые мы приберегли для обсуждения условных (true или false - истина или ложь) операторов.

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

Операции сравнения позволяют сравнивать два значения, получая результат в зависимости от того, дает ли сравнение истину или ложь. Если сравнение дает ложь, то результирующее значение равно нулю, если значение истинно, то результат равен 1. Ниже приведен список операций сравнения:

> больше

>= больше или равно

< меньше

<= меньше или равно

== равно

!= не равно

Почему нас должно заботить, является ли нечто истиной или ложью? Загрузите и выполните программу деления чисел и посмотрите, что произойдет, когда вы введете 0 для второго значения. Программа напечатает сообщение об ошибке (Divide by zero - Деление на ноль) и остановится. Теперь сделайте следующие изменения в программе и запустите ее снова.

#include <stdio.h>

main ()

{

float a,b,ratio;

printf("Введите два числа: ");

scanf("%f %f",&a,&b);

if (b = = 0.0)

printf("Отношение не определено\n");

else

{

ratio= a / b;

printf("Отношение = %f \n",ratio);

}

}

Оператор, находящийся в двух следующих за оператором scanf() строках, известен как условный оператор if. Вы можете понимать его так: "Если значение выражения (b = = 0.0) истинно, сразу вызвать printf(). Если значение выражения ложно, присвоить a / b переменной ratio, затем вызвать printf()".

Теперь, если вы введете 0 в качестве второго значения, то ваша программа напечатает сообщение «Отношение не определено» и будет ожидать от вас нажатия любой клавиши. Если второе значение - ненулевое, то программа вычисляет и печатает ratio, а затем ожидает нажатия клавиши - и все это благодаря оператора if.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]