- •Лексемы
- •Идентификаторы
- •Константы
- •Операции
- •Знаки пунктуации
- •Основные типы данных.
- •Описание переменных
- •Оператор присваивания
- •Примеры программ
- •Форматированный ввод, вывод
- •Особенности ввода, вывода символов
- •Функции gets, puts, atoi, atol и atof
- •Занятие 2. Операторы выбора.
- •Выражения, операции
- •Логические операции
- •Условная операция
- •Условный оператор
- •Оператор перехода goto
- •Оператор выбора switch
- •Оператор цикла с предусловием (while)
- •Оператор цикла с постусловием (do - while)
- •Оператор цикла for
- •Примеры использования операторо цикла
- •Занятие 3. Указатели. Ссылки. Массивы. Работа со строками.
- •Указатели
- •Операции разыменования и взятия адреса
- •Инициализация указателей
- •Арифметические операции с указателями
- •Присваивание указателей
- •Сравнение указателей
- •Операция new
- •Операция delete
- •Примеры использования указателей
- •Одномерные массивы
- •Инициализация одномерных массивов
- •Примеры работы с одномерными массивами
- •Многомерные массивы
- •Занятие 4. Указатели и массивы.
- •Указатели и одномерные массивы
- •Размещение одномерных массивов в динамической памяти.
- •Массивы указателей
- •Занятие 5. Указатели и многомерные массивы.
- •Двухмерный массив и вспомогательный массив указателей
- •Список рекомендуемой литературы.
Особенности ввода, вывода символов
Символы (переменные и константы типа 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. Заданы моменты начала и конца некоторого промежутка времени в часах, минутах и секундах (в пределах одних суток). Найти продолжительность этого промежутка в часах, минутах и секундах.