- •А. Нейбауэр.
- •Глава 1. Основы программирования 11
- •Глава 3. Переменные и константы 39
- •Глава 6. Операторы 103
- •Глава 13. Как собрать все вместе 253
- •Благодарности
- •Введение
- •Что вам даст эта книга
- •Программные средства
- •Глава 1. Основы программирования
- •Компьютерная программа
- •Языки программирования
- •Компиляторы
- •Интерпретатор
- •Скорость
- •Переносимость
- •Структурирование
- •Библиотеки функций
- •Необходимые пояснения
- •Что такое объектно-ориентированное программирование
- •Что Си может и чего не может
- •Этапы программирования
- •План программы
- •Текст программы
- •Компиляция программы
- •Компоновка программы
- •Тестирование программы
- •Изучение основ программирования
- •Что нужно, чтобы писать программы
- •Структура программы
- •Прописные и строчные символы
- •Инструкция return
- •Использование комментариев
- •Понятие параметров
- •Директива #include
- •Проектирование программы
- •Глава 3. Переменные и константы
- •Символьные данные
- •Целочисленные величины
- •Вещественные числа
- •Почему надо использовать целые числа?
- •Константы и переменные
- •Имена констант и переменных
- •Определение констант
- •Почему используют константы?
- •Определение переменных
- •Присваивание значения
- •Определение строковой переменной
- •Типы данных и функции
- •Литералы
- •Проектирование программы
- •Функция puts()
- •Функция putchar()
- •Двойственность символьных переменных
- •Управляющие коды
- •Код «новая строка»
- •Код «табуляция»
- •Код «возврат каретки»
- •Код «возврат на шаг»
- •Код «перевод страницы»
- •Отображение специальных символов на экране монитора
- •Многогранная функция printf()
- •Вывод чисел
- •Перевод строки
- •Преобразование типов данных
- •Форматированный вывод
- •Выбор правильных средств вывода информации
- •Проектирование программы
- •Функция gets()
- •Функция getchar()
- •«Для продолжения нажмите Enter»
- •Оператор получения адреса &
- •Функция scanf()
- •Входной поток
- •Использование функции scanf()
- •Выбор соответствующих средств ввода данных
- •Будьте осторожны при использовании scanf()
- •Неинициализированные переменные
- •Используемые алгоритмы ввода
- •Глава 6. Операторы
- •Арифметические операторы
- •Деление нацело
- •Типыданныхи операторы
- •Выражения
- •Приоритет операторов и порядок вычислений
- •Используемые алгоритмы обработки данных
- •Счетчики
- •Операторы инкремента
- •Аккумуляторы
- •Операторы присваивания
- •Присваивание начального значения
- •Проектирование программы
- •Остерегайтесь логических ошибок
- •Ищите образцы
- •Диагностические проблемы
- •Глава 7. Для чего нужны функции
- •Как использовать функции
- •Переменные в функциях
- •Автоматические (локальные) переменные
- •Внешние (глобальные) переменные
- •Статические переменные
- •Передача параметров
- •Возвращаемые значения
- •Возврат значений типа float
- •Использование return() в функции main()
- •Использование макроопределений
- •Проектирование программы
- •Автоматические или внешние переменные?
- •Неправильный ввод
- •Глава 8. Позвольте компьютеру принимать решения
- •Условия
- •Составные инструкции
- •Конструкция if...Else
- •Дополненный Опросник
- •Логические операторы
- •Вложенные инструкции if
- •Конструкция switch/case/default
- •Проверка чисел с плавающей точкой и строк
- •Проектирование программы
- •Проверка правильности ввода
- •Глава 9. Циклы
- •Использование цикла for
- •Создание паузы в программе
- •Составные инструкции
- •Использование переменных
- •Вложенные циклы
- •Использование цикла do...While
- •Вложенные циклы do
- •Использование цикла while
- •Комбинирование циклов разных типов
- •Проектирование программы
- •Использование флагов
- •Использование инструкции break
- •Глава 10. Массивы и строки
- •Массивы
- •Определение массива
- •Ввод значений в массив
- •Работа с массивами
- •Просмотр массива
- •Поиск в массиве
- •Передача массива функции
- •Использование массивов
- •Сравнение двух строк
- •Определение длины строки
- •Присваивание строк
- •Слияние строк
- •Массивы строк
- •Проектирование программы
- •Глава 11. Структуры и указатели
- •Использование структур
- •Определение структуры
- •Определение структурных переменных
- •Присвоение начального значения
- •Использование структуры
- •Массивы структур
- •Структуры и функции
- •Указатели
- •Указатели и функции
- •Глава 12. Вывод на диск и принтер
- •Что такое файловая структура
- •Указатель на файл
- •Как открыть файл
- •Как избежать ошибок выполнения
- •Как закрыть файл
- •Функции ввода и вывода
- •Работа с символами
- •Посимвольное чтение из файла
- •Работа со строками
- •Чтение строк
- •Форматированный ввод и вывод
- •Чтение форматированных файлов
- •Работа со структурами
- •Чтение структур
- •Чтение в массив
- •Дополнение файла новыми данными
- •Текстовый и двоичный форматы
- •Двоичный формат
- •Печать данных
- •Проектирование программы
- •Глава 13. Как собрать все вместе
- •Прикладная программа
- •Глобальные определения
- •Функция main()
- •Добавление записей: функция addcd()
- •Удаление записи: функция delcd()
- •Редактирование данных: функция chcd()
- •Изменение номера ячейки: функция chloc()
- •Вывод записи на экран: функция locate()
- •Печать записей: функция plist()
- •Сортировка записей: функция sort()
- •Приложение I Ответы и решения Глава 1. Основы программирования.
- •Глава 3. Переменные и константы.
- •Глава 6. Операторы.
- •Глава 7. Для чего нужны функции.
- •Глава 8. Позвольте компьютеру принимать решения.
- •Глава 9. Циклы.
- •Глава 10. Массивы и строки.
- •Глава 11. Струтуры и указатели.
- •Глава 12. Вывод на диск и принтер.
- •Приложение II Прикладная программа
Глава 6. Операторы.
1.Напишите программу, которая сообщает пользователю, сколько лет ему будет в 2000 году.
main()
{
int year, age, togo;
printf("Введите год: ");
scanf("%d", &year);
printf("Укажите Ваш возраст: ");
scanf("%d", &age);
togo = 2000 - year + age;
printf("В 2000 году Вам будет %d лет", togo);
}
2.Напишите программу расчета квадрата и куба числа, введенного с клавиатуры.
main()
{
int number, square, cube;
printf("Введите целое число: ");
scanf("%d", &number);
square = number * number;
cube = number * number * number;
printf("Введено число %d\n", number);
printf("Квадрат числа равен %d\n", square);
printf("Куб числа равен %d\n", cube);
}
3.Напишите программу перевода температуры из шкалы Фаренгейта (F) в шкалу Цельсия (C). Формула пересчета C=(5.0/9.0)Ф(F–32).
main()
{
int temp;
float celsius;
printf("Введите значение температуры в виде \
целого числа: ");
scanf("%d", &temp);
celsius = (5.0/9.0)*(temp-32);
printf("По шкале Фаренгейта: %d По шкале \
Цельсия: %f", temp, celsius);
}
4.Модифицируйте программу из упражнения 3 так, чтобы она сообщала, на сколько градусов отстоит введенное значение температуры от точки замерзания по шкале Фаренгейта и по шкале Цельсия.
main()
{
int temp, ffreeze;
float celsius;
printf("Введите значение температуры в виде \
целого числа: ");
scanf("%d", &temp);
celsius = (5.0/9.0)*(temp-32);
ffreeze = temp - 32;
printf("По Фаренгейту: %d От точки \
замерзания: %d\n", temp, ffreeze);
printf("По Цельсию: %f От точки замерзания: \
%f", celsius, celsius);
}
5.Объясните, почему следующая программа написана неверно:
#define TAX_RATE 0.06
main()
{
float cost, total;
printf("Введите стоимость единицы товара: ");
scanf("%f", &cost);
printf("Введите величину транспортных расходов: ");
scanf("%f", &shipping)'
total = cost + cost * tax_rate + shipping;
printf("Общая стоимость составляет %f", total); }
В программе используется переменная shipping, которая не была определена. Вторая инструкция scanf() оканчивается апострофом, вместо точки с запятой.
Глава 7. Для чего нужны функции.
1.Напишите программу Опросника, в котором задаются четыре вопроса; каждый вопрос и ответ оформите в виде отдельной функции.
char pause;
main()
{
quest1();
quest2();
quest3();
quest4();
}
quest1()
{
puts("Что является центром живой клетки?\n");
puts("Для получения правильного ответа
нажмите Enter\n");
pause=getchar();
puts("Клеточное ядро\n");
return;
}
quest2()
{
puts("Как можно заразиться солитером?\n");
puts("Для получения правильного ответа
нажмите Enter\n");
pause=getchar();
puts("Если есть недожаренное мясо\n");
return;
}
quest3()
{
puts("Назовите основные группы крови.\n");
puts("Для получения правильного ответа
нажмите Enter\n");
pause=getchar();
puts("Основных групп крови четыре A, B, AB и O\n");
return;
}
quest4()
{
puts("Как будет по-французски море?\n");
puts("Для получения правильного ответа
нажмите Enter\n");
pause=getchar();
puts("По-французски море называется la mer\n");
return;
}
2.Напишите программу, в которой вводится число, а затем вызывается функция для расчета и отображения четвертой степени этого числа.
main()
{
int number;
printf("Введите целое число: ");
scanf("%d", &number);
tothefourth(number);
}
tothefourth(value)
int value;
{
int power;
power=value*value*value*value;
printf("Четвертая степень числа %d равна %d", value, power);
return;
}
3.Внесите изменения в программу из упражнения 2 так, чтобы функция вычисляла четвертую степень числа, а затем передавала результат в main() для вывода на дисплей.
main()
{
int number, fourth;
printf("Введите целое число: ");
scanf("%d", &number);
fourth = tothefourth(number);
printf("Четвертая степень числа %d равна %d", number, fourth);
}
int tothefourth(value)
int value;
{
return(value*value*value*value);
}
4.Объясните, почему следующая программа написана неверно:
dothis()
{
puts("Это первое");
main();
return(0);
}
main()
{
puts("Это второе");
return();
}
Собственная функция может помещаться только после функции main(), а не перед ней.
Собственная функция не может вызывать main().
Программа должна быть отредактирована следующим образом:
main()
{
puts("Это первое");
dothis();
return(0);
}
dothis()
{
puts("Это второе");
return(0);
}