Как ввести переменную в c с клавиатуры
Перейти к содержимому

Как ввести переменную в c с клавиатуры

  • автор:

Как ввести переменную в c с клавиатуры

Для хранения данных в языке программирования Си используются переменные . Переменная может иметь тип, имя и значение.

Перед использованием любую переменную надо определить. Синтаксис определения переменной выглядит следующим образом:

тип_переменной имя_переменной;

Например, простейшее определение переменной:

int number;

Здесь определена переменная number, которая имеет тип int . Поскольку определение переменной представляет собой отдельное выражение, то после него ставится точка с запятой.

Имя переменной может представлять последовательность символов латинского алфавита, чисел и знака подчеркивания. При этом имя должно начинаться либо с алфавитного символа, либо со знака подчеркивания.

int _number33;

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

Также стоит учитывать, что C — регистрозависимый язык, а это значит, что регистр символов имеет большое значение. То есть следующем коде будут определяться две разные переменные:

int number; int Number;

Поэтому переменная Number не будет представлять то же самое, что и переменная number.

Кроме того, в языке есть ряд зарезервированных слов, которые не могут использоваться в качестве имени переменной. Их не так много: auto, break, case, char, const, continue, default, do, double, else, enum, extern, float, for, goto, if, int, long, register, return, short, signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while .

Также нельзя объявить больше одной переменной с одним и тем же именем, например:

int number; int number;

Подобное определение вызовет ошибку на этапе компиляции.

Можно определить сразу несколько переменных:

int number1, number2, number3;

Здесь определены три переменных: number1, number2 и number3.

Присвоение значения

При определении переменных каждой из них присваивается неопределенное значение. Но в дальнейшем мы можем присвоить ей конкретное значение:

int number; number = 2;

#include int main(void)

Для вывода числа на консоль используется спецификатор %d, вместо которого вставляется значение переменной number. Таким образом, мы получим следующий консольный вывод:

number = 2

Однако также можно сразу при определении переменной дать ей некоторое начальное значение. Данный прием называется инициализацией :

#include int main(void)

Также можно инициализовать сразу несколько переменных:

Ввод данных с клавиатуры в Си

Для форматированного ввода данных в Си используется оператор scanf

Чтобы ввести записать информацию в переменную с клавиатуры в си с помощью оператора scanf необходимо указать сообщение и переменную, в которую будет записываться с клавиатуры з начение

scanf (“формат ввода”,&имя переменной )
В формате ввода используется
%d ввод целого числа (переменная типа int)
%f ввод вещественного числа (переменная типа float)
%с ввод одного символа (переменная типа char)
Например:
scanf (“%d”, &a); // ввод с клавиатуры значения для целочисленной переменной a
Пример программы 3. Программа в си запрашивает ввод с клавиатуры двух целых чисел, выводит их сумму на экран
#include
#include
main()
int a,b,c;
printf(«Введите первое целое число\n»);
scanf(«%d», &a); // ввод переменной a с клавиатуры
printf(«Введите второе целое число\n»);
scanf(«%d», &b); // ввод переменной b с клавиатуры
c=a+b; // присваиваем переменной с значение a+b
printf(«%d+%d= %d\n», a,b,c); // форматированный вывод выражения a+b =c
getch(); // ждем нажатия кнопки
>
Для ввода строки в си с помощью оператора scanf необходимо объявить строку и считать ее с помощью scanf()
char имя строки[ длина строки];
scanf(“%s”, имя строки);
Пример программы 4. Программа запрашивает ввод имени и отчества с клавиатуры и выводит на экран приветствие с обращением по имени и отчеству
#include
#include
main()
char n[50];// объявляем строковую переменную n для имени
char sn[50];// объявляем строковую переменную sn для отчества
printf(«Как Ваше имя ?\n»);
scanf(«%s», n); // ввод строки n имени
printf(«Как Ваше отчество ?\n»);
scanf(«%s», sn);// ввод строки sn отчества
printf(«Здравствуйте, %s %s!\n», n, sn); // форматированный вывод Здравствуйте, n sn!
getch();
>

Вернуться к содержанию Перейти к следующему уроку Условия в Си.

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

Как ввести переменную в c с клавиатуры

Для ввода данных в консоли может использоваться функция scanf() . Эта функция определена в заголовочном файле stdio.h (там же, где и функция printf) и имеет следующее формальное определение:

scanf(форматная_строка, аргументы)

И форматная_строка, и аргументы для функции scanf обязательны.

Форматная_строка содержит спецификации преобразования, которые определяют вводимые данные. Общий вид спецификаций преобразования:

% * ширина_поля модификатор спецификатор

Из этих элементов обязательны только два: знак процента % и спецификатор.

Спецификатор определяет тип вводимых данных:

  • %c : считывает один символ
  • %d : считывает десятичное целое число
  • %i : считывает целое число в любой системе (десятичной, шестнадцатеричной, восьмеричной)
  • %u : считывает положительное целое число
  • %e : считывает число с плавающей точкой в экспоненциальной форме
  • %E : считывает число с плавающей точкой в экспоненциальной форме с заглавным символом экспоненты
  • %f : считывает число с плавающей точкой
  • %F : считывает число с плавающей точкой
  • %g : считывает число с плавающей точкой
  • %G : считывает число с плавающей точкой
  • %o : считывает восьмеричное число
  • %x : считывает шестнадцатеричное число
  • %X : считывает шестнадцатеричное число
  • %s : считывает строку
  • %% : считывает символ процента

Символ звездочки * в спецификации преобразования позволяет пропустить при вводе водимые символы для типа, указанного через спецификатор.

Ширина_поля представляет целое положительное число, которое позволяет определить, какое количество байтов будет учитываться при вводе.

Модификаторы позволяют конкретизировать тип данных. В частности, есть следующие модификаторы:

  • h : для ввода значений типа short int ( %hd )
  • l : для ввода значений типа long int ( %ld ) или double ( %lf , %le )
  • L : для ввода значений типа long double ( %Lf , %Le )

В качестве аргументов в функцию scanf() передаются адреса переменной, которая будет получать введенное значение. Для получения адреса переменной перед ее именем ставится знак амперсанда & . Например, если переменная называется age , то ее адрес мы можем получить с помощью выражения &age .

Например, введем с консоли числовое значение:

#include int main(void)

Здесь вводится значение для переменной age, которая представляет тип int , поэтому в форматную строку в функции scanf передается спецификатор %d . Здесь не используется ни символ звездочки, ни ширина поля, ни модификаторы. Вторым параметром идет адрес переменной age — &age .

После ввода значения мы можем его использовать, например, вывести на консоль:

Input your age:44 age = 44

Аналогичен будет ввод данных других типов:

#include int main(void)

После ввода значения мы можем его использовать, например, вывести на консоль:

Enter the product code: 1234 Enter the price: 234.567 Product code: 1234 price: 234.57

Можно сразу вводить несколько значений. В этом случае в качестве разделителя используется пробел:

#include int main(void)

При вводе данных в консоли функция scanf может использовать пробелы в качестве разделителей, чтобы выдернуть из ввода значения для определенных переменных. Консольный ввод-вывод:

Enter product data: 1234 3 234.56 Product code: 1234 count: 3 price: 234.56

Ввод строк

Функция scanf() также позволяет вводить строки. Например:

#include int main(void) < char name[10]; // вводим имя printf("Enter your name: "); scanf("%10s", name); printf("Name: %s \n",name); return 0; >

Здесь для имени выделяется 10 символов. Теоретически мы можем ввести и большее количество символов, но чтобы только 10 из них учитывались, в строку форматирования передается ширина поля, которая представляет 10 символов — %10s . Когда функция считает достаточное количетсво символов, она прекратит считывание.

Обратите внимание, что для ввода строки перед названием переменной не указывается символ адреса.

scanf("%10s", name);

Потому что название массива уже само по себе представляет адрес на первый элемент массива.

Возможный консольный вывод:

Enter your name: Tom Name: Tom

Однако при использовании этой функции мы можем столкнуться с рядом проблем. Прежде всего попробуйте ввести в предыдущем примере составное имя, в которм подстроки разделены пробелами, например, «Tom Smith».

Enter your name: Tom Smith Name: Tom

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

#include int main(void)

Спецификатор %10[^\n] указавает, что мы по прежнему считываем неболее 10 символов. Квадратные скобки [] представляют позволяют определить набор символов, которые будут извлекаться из ввода или, наоборот, игнорироваться. Так, выражение [^\n] говорит, что надо считать ввод до тех пор пока не встретиться символ перевода строки ‘\n’, то есть пока пользователь не нажмет на клавишу Enter.

Переменные в языке Си. Объявление переменной в Си

Чтобы хранить в своей программе какие-либо данные, вам понадобятся переменные. Прежде всего, нужно научиться эти переменные в программе создавать. Другими словами, вспоминая нашу аналогию с коробками, чтобы в коробку что-то положить, её, эту самую коробку, хорошо бы сначала где-нибудь раздобыть.

В книжках по программированию процесс создания переменной называют объявлением переменной . Это словосочетание хорошо бы знать, чтобы понимать профессиональную литературу и речь других программистов. Но ещё более важно понимать, что за этим словосочетанием скрывается.

Как объявить переменную?

Для того чтобы объявить переменную, необходимо указать её тип и записать её имя. Ну и не забыть поставить «;». Общая стуктура объявления переменной показана на следующем рисунке.

Общий синтаксис объявления переменной

Рис.1. Общий синтаксис объявления переменной.».

В примере на рисунке мы создаём переменную с именем num, в которой можно будет хранить целые числа. На то, что мы собираемся использовать переменную для хранения целых чисел, указывает тип данных int.

Ещё парочка примеров:

Листинг 1. Объявление переменных

int z; // переменная z целого типа char w; // переменная w символьного типа

Для имён переменных есть одно правило, которое надо будет запомнить.

В качестве имени переменной может выступать любая последовательность символов латинского алфавита, цифр и знака нижнего подчеркивания «_», которая начинается с буквы.

На самом деле, на имя переменной есть дополнительные ограничения, но мы пока в такие детали вдаваться не будем. Давайте лучше посмотрим на примеры правильных и неправильных имён.

Правильные имена переменных

Peremennaya, flag, f3, var4, KolichestvoBukv, fd4s, FLaG, key_number

Неправильные имена переменных

2num – начинается с цифры
num flat – содержит пробел в имени
nomer-telefona – содержит дефис

И ещё один важный момент. В языке программирования Си регистр букв очень важен. Например, переменные с именами flag, FLAG, FlAg, fLAg — это всё различные переменные. Кроме того, есть ряд слов, которые нельзя использовать для названия переменных. Например, int, void, return и другие. Это специальные ключевые слова , которые зарезервированы для нужд самого языка и нигде в другом месте не могут быть использованы.

Кстати, за одно объявление можно создать сразу несколько переменных одного типа.

Листинг 2. Объявление нескольких переменных

int a,c; // объявляем переменные a и c целого типа double x, y, z; // объявляем сразу три вещественные переменные

Всё просто и логично. Сначала указывает тип переменных, а потом их имена, разделённые запятой.

Переменная в памяти компьютера.

Пару слов о том, как выглядит объявление переменной с точки зрения компьютера.

Можно считать, что при объявлении мы сообщаем компьютеру, чтобы он выделил под переменную место в памяти и связал это место определенным именем. Количество места, которое будет выделено в памяти для хранения переменной, зависит от типа этой переменной. Проиллюстрируем эту мысль следующим рисунком.

Листинг 3. Объявление двух переменных

int w; // объявляем целочисленной переменной w double z; // объявляем вещественной переменной z

 Переменные в памяти компьютера

Рис.3. Переменные в памяти компьютера.

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

Сохрани в закладки или поддержи проект.

Практика

Решите предложенные задачи: Для удобства работы сразу переходите в полноэкранный режим

Исследовательские задачи для хакеров

  1. Объявите в программе переменную с неправильным именем и попробуйте скомпилировать программу. Посмотрите, какую ошибку выдаст компилятор.
  2. Найдите список всех ключевых слов языка Си. Можно искать в стандарте языка(подсказка: «keywords»), а можно в интернете. Запоминать наизусть их не нужно, но разок посмотреть на них стоит.

Дополнительные материалы

  • В ваших программах не стесняйтесь давать переменным длинные имена. Хорошо, если по имени переменной можно будет сразу понять, что в ней хранится. Есть два основных способа записи длинных имён переменных: ВерблюжьяНотация и змеиная_нотация. Подробнее о плюсах и минусах обоих подходов можно почитать по следующим ссылкам: Хабрахабр и Типичный программист.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *