
- •Лабораторная работа.1. Простейшие программы и базовые операции ввода вывода
- •Задание 1 Приложение «Hello World!»
- •Элементы простейшей программы
- •Функция main()
- •Переменные
- •Индивидуальное задание №1
- •Операции присваивания
- •Приведение типа
- •Смешанные выражения
- •Поразрядные операции и сдвиги
- •Инкремент и декремент
- •Условная операция
- •Функции ввода и вывода в С
- •Спецификация преобразования
- •Задание 2 Возможности функции printf( )
- •Escape-последовательности
- •Индивидуальное задание №2
- •Функции ввода строки — scanf() и gets()
- •Функции getch() и getche()
- •Задание 3 Пример функции ввода информации пользователем
- •Индивидуальное задание №3
- •Индивидуальное задание №4
- •Лабораторная работа.2. Управляющие инструкции, массивы
- •Управляющие инструкции if и switch
- •Индивидуальное задание №1
- •Индивидуальное задание №2
- •Управляющие конструкции циклов
- •Индивидуальное задание №3
- •Индивидуальное задание №4
- •Массивы
- •Индивидуальное задание №5
- •Требования к отчетам по лабораторной работе №2
- •Лабораторная работа.3. Строки, функции, файлы
- •Символы и строки
- •Задание 1.
- •Пример программы 1:
- •Пример программы 2:
- •Функции ввода-вывода
- •Функции работы со строками
- •Индивидуальное задание №1
- •Функции
- •Задание 2.
- •Индивидуальное задание №2
- •Задачи повышенной сложности
- •Файлы
- •Задание 3.
- •Функции работы с файлами
- •Индивидуальное задание №3
- •Требования к отчетам по лабораторной работе №3

Основы создания программ в Си |
Page 48 of 68 |
серебряных и бронзовых медалей. Рекомендуемый вид экрана при-веден ниже (данные, введенные пользователем, выделены полужирным).
Результат |
соревнований |
||
Австрия-> |
0 |
1 |
1 |
Германия-> |
1 |
0 |
2 |
Норвегия-> |
4 |
2 |
1 |
Россия-> |
2 |
3 |
2 |
Финляндия->1 2 2 |
|
|
|
|
||
Команда |
Зол. |
Сер. |
Бр. |
Всего |
Очков |
|
1 |
Норвегия |
4 |
2 |
1 |
7 |
4 5 |
2 |
Россия |
2 |
3 |
2 |
7 |
42 |
3 |
Финляндия |
1 |
2 |
2 |
5 |
29 |
4 |
Германия |
1 |
0 |
2 |
3 |
17 |
5 |
Австрия |
0 |
1 |
1 |
2 |
11 |
Требования к отчетам по лабораторной работе №2
Отчет должен содержать описание решения 4-ого и 5-ого индивидуальных заданий в следующем виде:
1.Текст задания;
2.Блок схема выполнения программы;
3.Код программы;
4.Текст результата выполнения.
Отчеты принимаются либо в электронном виде в документе не старше Word 2003. Либо в рукописном варианте.
Лабораторная работа.3. Строки, функции, файлы
Символы и строки
Приступая к решению задач этого раздела, следует вспомнить, что:
•каждому символу соответствует число — код символа;
•в C++ строка — это массив символов;
•последним символом строки обязательно должен быть нуль-символ, код которого равен 0, и который в тексте программы изображается так: '\0';
•сообщения или подсказки, используемые в программе, удобно представить как массив указателей на строки и инициализировать массив, задать сообщения в инструкции объявления массива:
char *mes[] ={"Сообщение 1","Сообщение 2", ... , "«Сообщение"} ;

Основы создания программ в Си |
Page 49 of 68 |
•если вводимая во время работы программы строка содержит пробелы, то функция scanf вводит только часть строки до первого пробела, а функция gers — всю строку, в том числе и соответствующий клавише <Enter> символ ' \n’.
Рассмотрим пример реализации программы для работы с символами строк.
Задание 1.
Скомпилировать представленные 2 примера программ. Выявить особенности работы с символами строк.
Пример программы 1:
Написать программу, которая проверяет, является ли введенная с клавиатуры строка дробным числом.
Код программы:
#include <stdio.h> #include <conio.h> void main()
{
char st[20]; |
// строка |
int i; |
// номер проверяемого символа |
int ok = 0; |
// пусть строка — не дробное число |
printf("Enter a digit with floating point, and press <Enter>"); printf("->");
scanf("%s", &st);
i = 0;
if (st[i] >= '1' && st[i] <='9') // первый символ - цифра
{
//за цифрой могут быть еще цифры while ( st[i] >= '1' && st[i] <='9' ) i++;
//за цифрами должна быть точка if (st[i] == '.')
{
i++;
//за точкой должна быть хотя бы одна цифра if (st[i] >='1' && st[i] <='9')
{
//и еще цифры
while ( st[i] >= '1' && st[i] <='9' ) i++;

Основы создания программ в Си |
Page 50 of 68 |
|
|
|
|
ok = 1; // похоже строка - дробное число
}
}
}
printf("String: %s \n is",st); if ( st[i] || !ok )
printf(" not");
printf(" digit with floating point.\n");
printf("\n Press enter for finish <Enter>\n"); getch();
}
Анализ кода программы:
Условие st[i] >= '1' сравнивает значение кода символа с индексом i из введенной строки и значение кода символа «1». Как можно видеть по таблице кодов символов (см. ниже Таблица 5) коды символы чисел располагаются по порядку, поэтому можно задать представленное условие для определения того, что символ является числом.
Кроме этого исходя из даных (Таблица 5) возможно получать значение цифры по коду символа:
int a = st[0] – 48; // значение цифры первого символа
Это конечно верно только при условии, что символ st[0] является цифрой, т.е. его код лежит в пределах от48 до 57.
Таблица 5 Таблица значений Ascii символов

Основы создания программ в Си |
Page 51 of 68 |
Пример программы 2:
Написать программу, которая удаляет из введенной с клавиатуры строки начальные пробелы.
#include <stdio.h> #include <conio.h> #include "string.h" void main()
{
unsigned char sst[80]; // Строка unsigned char dst[80]; // Буффер int i,j;
printf("Remove the whitespaces symbols in the beginning\n"); printf("Enter a string:");
i=0;
while ((sst[i] = getch()) != 13 && i < 79)
{
putch(sst[i]);
i++;
}
sst[i] = '\0'; // нулевой символ в конце строки
i = 0; j = 0;
// найдем первый символ, отличный от пробела while( sst[i] && sst[i] == ' ')
i++;
//здесь i - номер первого символа, отличного от пробела,
//скопируем sst в dst
while (sst[i])
dst[j++] = sst[i++]; dst[j] = '\0';
printf("\nString without of whitespaces:%s\n",dst);
printf("\n Press enter for finish <Enter> \n"); getch();
}
Анализ кода программы:
while ((sst[i] = getch()) != 13 && i < 79)