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

Особенности ввода, вывода символов

Символы (переменные и константы типа char) в компьютере хранятся в виде кодов, которые интерпретируются как целые числа в диапазоне от -128 до 127 (в соответствии с таблицей ASCII). В программе переменные типа char можно вводить, выводить и использовать либо как символы либо как целые числа. Один или несколько символов можно ввести с помощью функции scanf() с форматной спецификацией %c

char c1,c2,c3;

scanf(“%c%c%c”,&c1,&c2,&c3);

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

abc<Enter>

переменная c1 получит значение a, c2 – значение b, с3 – значение c.

Если при вводе символы нужно разделить пробелом или запятой, то эти разделители ставятся между форматными спецификациями ввода

scanf(“%c %c %c”,&c1,&c2,&c3); ( a b c<Enter> - строка ввода)

scanf(“%c,%c,%c”,&c1,&c2,&c3); (a,b,c<Enter> - строка ввода)

При выводе символов можно выводить сам символ по форматной спецификации %c или его код по форматной спецификации %d

printf(“Код символа %c равен %d\n”,c1,c1);

Здесь сначала значение переменной c1 будет выведено в виде символа (по форматной спецификации %c), а затем значение переменной c1 будет выведено по форматной спецификации %d как целое число (код символа, являющегося значением переменной c1).

Ввод и вывод одного символа гораздо проще осуществляется с помощью функций getchar() и putchar(). Функция getchar() получает один символ, поступающий с терминала, и передает его программе, эта функция не имеет аргументов. А функция putchar() получает один символ, поступающий из программы, и пересылает его для вывода на экран. Функция putchar() имеет один аргумент. При ее вызове необходимо в скобках указать символ, который нужно вывести на экран. Аргументом может быть одиночный символ, переменная или функция, значением которой является одиночный символ, например,

putchar(‘S’); // Символьные константы заключаются в апострофы

Пример использования функции putchar() для вывода строки.

putchar(‘\n); // Переход на новую строку и печать строки “Hello!”

putchar(‘H’); putchar(‘e’); putchar(‘l’); putchar(‘l’); putchar(‘o’); putchar(‘!’);

Пример 1. Ввести с клавиатуры символ и вывести его на экран.

#include <stdio.h>

int main()

{

printf(“Введите символ “);

putchar(getchar()); // Печать на экране только что введенного символа

return 0;

}

Пример 2.

Ввести с клавиатуры символ и вывести на экран его код.

#include <stdio.h>

int main()

{

char smb;

printf(“Введите символ “);

smb=getchar();

printf(“Код символа %c = %d\n”,smb,smb); // Вывод символа и его кода

return 0;

}

Пример 3.

Ввести с клавиатуры код символа (целое число от 1 до 256) и вывести на экран соответствующий символ.

#include <stdio.h>

int main()

{

int x;

printf(“Введите целое число от 1 до 256: “);

scanf(“ %d”,&x);

printf(“Код символа %c = %d\n”,x,x); // Вывод символа и его кода

return 0;

}

Функции gets, puts, atoi, atol и atof

Функции printf() и scanf() используют спецификации формата, указывающие формат и тип данных, которые должны быть напечатаны или введены. Если данные, введенные с помощью функции scanf(), не соответствуют строке формата, то функция может вести себя непредсказуемо. Иногда проще воспользоваться функцией gets(), которая читает вводимые символы (включая пробелы) в объявленную в программе строку символов (максимально возможное количество символов в ней задается в квадратных скобках, но не более 80). Если же должно быть введено число, то можно затем вызвать функцию atoi(), atol() или atof() для преобразования введенной строки соответственно в целое, длинное целое или вещественное число. Эти функции описаны в библиотеке stdlib.h, поэтому для их использования необходимо подключить эту библиотеку. Функция puts() выводит на экран строку символов.

Пример использования функций gets(), puts(), atoi().

Ввести имя и целое число как строки символов с помощью функции gets(), введенную строку с целым числом преобразовать в целое число с помощью функции atoi() и выдать на экран с помощью функции printf().

#include <stdio.h> // В stdio.h описаны printf, gets

#include <stdlib.h> // В stdlib.h описана atoi

int main()

{

char name[40], // Строка символов для имени, состоящая из 40 символов, в введенной строке должно быть не более 39 символов, так как символ ’\0’ (конец строки) является обязательным

sage[40]; // Строка символов для возраста

int age=0; // Целое число для возраста

puts(“Пожалуйста, введите Ваше имя: “);

gets(name);

printf(“Привет, %s! Cколько Вам лет? ”, name);

gets(sage);

age=atoi(sage); // Преобразование строки символов в целое число

printf(“Возраст %d, конечно, самый замечательный!”,age);

return 0;

}

Практическая часть

Домашнее задание

Задать в программе две вещественные переменные, вычислить их среднее арифметическое, сумму, разность и произведение, результаты вывести на экран с пояснительными текстами.

Вычислительный зал

1. Интерфейс окна редактора.

2. Выполнить вычисления по формулам: S=VT; Е=МС2/2.

3. Сколько времени в минутах школьник затратит на дорогу от дома до школы, если известно расстояние S и средняя скорость движения школьника V км/час.?

Дополнительные задачи

1. Задать в программе вещественные значения переменных A, B, C и вывести результат вычисления выражения A*(B/3-14)+C*(A*3+5) на экран. Использовать поясняющие надписи и комментарии.

2. Вычислить значения y по формуле

3. Определить количество недель в году.

4. Известно, что 1 верста=500 саженей, 1 сажень = 3 аршина, 1 аршин =16 вершков, 1 вершок=44,45 мм. Определить чему в метрах, сантиметрах и миллиметрах равны 1 аршин, 1 сажень, 1 верста.

6. Определить число, полученное записью в обратном порядке цифр заданного трехзначного целого числа.

Составьте программу исследования положительного вещественного числа А, в которой определялись бы значения следующих величин: целая часть, дробная часть, значение арифметического квадратного корня, остаток от деления на 5.

Вычислить объем и площадь поверхности параллелепипеда.

Определить количество недель в году.

10.Известно, что 1 верста=500 саженей, 1 сажень = 3 аршина, 1 аршин =16 вершков, 1 вершок=44,45 мм. Определить чему в метрах, сантиметрах и миллиметрах равны 1 аршин, 1 сажень, 1 верста.

11.Длина некоторого отрезка составляет p метров. Перевести ее в русскую неметрическую систему.

12.Треугольник ABC задан длинами сторон. Найти длину высоты, опущенной из вершины A.

13.Дано целое число n. Присвоить переменной m последнюю цифру числа n.

14.Пусть идет k –я секунда суток. Определить, сколько целых часов h и целых минут m прошло к этому моменту с 0 часов.

15.Дано время запуска ракеты в часах (h), минутах (m) и секундах (s) и время полета в секундах (t). Определить время возвращения на землю в часах, минутах и секундах.

16.Данное целое положительное число m, состоящее из пяти знаков. Определить число сотен и тысяч в нем.

17.Определить f - угол (в градусах) между положением часовой стрелки в начале суток и ее положением в h часов m минут и s секунд (0<=h<=11, 0<=m<=59, 0<=s<=59).

18. Ввести символ и целое число (от 33 до 126). Определить символы, являющиеся последующим и предыдущим для введенного символа, вывести их, а также вывести символ с кодом, равным введенному целому числу.

19. Ввести три символьных строки, содержащих вещественные числа, в программе преобразовать их в вещественные числа с помощью функции atof(), вычислить их среднее арифметическое и вывести на экран с соответствующими комментариями. Затем ввести эти же числа с помощью функции scanf и вывести на экран их среднее арифметическое.

Вычислительный зал

20. Ввести символ и целое число. Определить остаток от деления кода введенного символа на число.

Ввести символ и вещественное число, определить целую часть от деления числа на код введенного символа.

21. Ввести символьные строки, содержащие целые числа, с помощью функции atoi() преобразовать их в числа, вычислить их произведение. Найти остаток от деления произведения на 100 и вывести на экран соответствующий полученному результату символ.

22. Ввести три символьные строки, содержащие вещественные числа, преобразовать их в числа с помощью функции atof(), присвоить их переменным A, B, C и вывести результат вычисления выражения A*А+B*B+C*C на экран с соответствующими комментариями.

23. Ввести значения R и Y в одной строке и вывести результат выражения R*Y2+(Y/5) в той же строке. Использовать поясняющие надписи и комментарии.

24. Ввести количество минут, прошедших с 0 часов. Определить время в часах и минутах.

25. Длина отрезка задана в дюймах (1 дюйм = 2,54 см). Перевести значение длины в метрическую систему, т.е. выразить ее в метрах, сантиметрах и миллиметрах. Так, например, 21 дюйм=0 м 53 см 3,4 мм.

26. Угол задан в градусах, минутах и секундах (ввести эти значения с соответствующими приглашениями). Найти его величину в радианах.

27. Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в часах, минутах и секундах.