Функция форматного вывода данных
printf(<управляющая_строка>, <аргумент_1>, <аргумент_2>, ... );
Управляющая_строка содержит объекты трех типов: обычные символы, которые просто выводятся на экран, спецификации преобразования, каждая из которых вызывает вывод на экран значения очередного аргумента из последующего списка и управляющие символы-константы. Каждая спецификация преобразования, как и в функции форматного ввода, начинается со знака % и заканчивается также символом преобразования. Если после знака % записан не символ, то он выводится на экран. Функция printf использует управляющую строку, чтобы определить, сколько всего аргументов и какие их типы.
Пример организации форматного ввода/вывода данных
#include <stdio.h> // директива препроцессора подключения заголовочного файла, содержащего описание использованных в программе функций ввода/вывода
#include <conio.h> // директива препроцессора подключения заголовочного файла, содержащего описание таких функций, как getch() – ожидание нажатия любой клавиши
int main()
{
int in; // объявление переменной целого типа
float fl; // объявление переменной вещественного типа
char ch; // объявление переменной символьного типа
printf(“\nВвод целого числа\n”); // переход на другую строку, вывод информации и переход на другую строку
scanf(“%d”, &in); // введенное число заносится в переменную i по ее адресу
printf(“Ввод чисел\n”);
scanf(“%f %c”,&fl,&ch); // введенные числа заносятся в переменные x и ch по их адресам
printf(“Вывод чисел %d %f %c“,in,fl,ch); // вывод на экран указанной строки, заменяя спецификацию преобразования на значение числа
getch(); // ожидание нажатия любой клавиши
return 0; // возврат из функции
}
Основные стандартные функции.
Стандартные функции консольного ввода/вывода
Консольный ввод/выводреализован как функции и объявлен в include-файле <conio.h>.
ФУНКЦИЯ | ИСПОЛЬЗОВАНИЕ |
Cgets | читает строку с консоли |
Cputs | записывает строку на консоль |
Getch | читает символ с консоли |
Putch | записывает символ на консоль |
Стандартные математические функции
Стандартные математические функции существуют для облегчения программирования математических вычислений; функции работают со значениями, представленными в форме с плавающей точкой.Основные математические функции объявлены в include-файле <math.h>.
ФУНКЦИЯ | ИСПОЛЬЗОВАНИЕ |
acos(x) | вычисляет arccos x |
asin(x) | вычисляет arcsin x |
atan(x) | вычисляет arctg x |
atan2(y,x) | вычисляет arctg(y/x) |
ceil(x) | находит целую часть x |
cos(x) | вычисляет cos x |
exp(x) | вычисляет экспоненциальную функцию |
fabs(x) | вычисляет абсолютное значение x |
floor(x) | находит наибольшее целое, которое меньше или равно x |
fmod(x,y) | находит остаток с плавающей точкой от деления x на у |
log(x) | вычисляет натуральный логарифм х |
log10(x) | вычисляет десятичный логарифм х |
modf(x,&n) | разделяет х на целую (возвращаемое значение) и дробную (n) части |
pow(x,y) | вычисляет х в степени y |
sin(x) | вычисляет sin x |
sqrt(x) | находит квадратный корень из х |
tan(x) | вычисляет tg x |
II. Контрольные вопросы.
1. Что такое «базовые типы данных»?
2. Какое существуют целочисленные типы в языке Си? Сколько байтов памяти занимает тип int?
3. Назвать вещественные типы языка Си? Сколько байтов памяти занимает тип float?
4. Как представляются символьные данные в языке Си?
5. Что представляет собой тип void?
6. Что представляет собой программа на языке Си? Какая структура Си-программы?
7. Что такое «операция» и что такое «операнд»? Какая операция называется унарной, а какая – бинарной?
8. Что представляет собой выражение?
9. Какие арифметические операции используются в языке Си?
10. Существует ли логический тип в языке Си? Какие значения используются для представления логических значений?
11. Какие используются операции сравнения и какие – логические операции?
12. Какие операции относятся к операциям присваивания?
13. Какие группы операций присваивания существуют в языке Си? Привести примеры.
14. Является ли оператор программной единицей?
15. Какие группы основных управляющих конструкций представляют собой операторы?
16. Что такое «пустой оператор» и для чего он используется?
17. Какие существуют операторы простой последовательности?
III. Практическая часть.
1. Выполнение общего задания.
Задача 1.
1. Постановка задачи: разработать алгоритм вычисления и вывода на экран значения a по формуле
Входные значения x, y вводятся с клавиатуры. Написать программу, реализующую разработанный алгоритм.
2. Математическая модель и описательный алгоритм задачи:
• ввести значения в переменные x, y;
• вычислить значение переменной a по заданной формуле без проверок введенных значений x, y, так как значение a(x,y) определено для любых значений аргументов;
• вывести полученное значение переменной a.
3. Блок-схема алгоритма задачи:
4. Текст программы – реализация алгоритма на языке Си:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int x, y; // описание переменной целого типа
float a; // описание переменной вещественного типа
printf(“\n input x=”);
scanf(“%d”,&x);
printf(“\n input y=”);
scanf(“%d”,&y);
a=(sqrt(abs(x-1))-sqrt(abs(y)))/(1+(float)x*x/2+(float)y*y/4); // используется преобразование типов для представления целых значений x, y в форме с плавающей точкой
printf(“\n output a=%f“,a);
getch();
return 0;
}
5. Тестирование:
Теоретически рассчитанное выходное значение | Практически полученное выходное значение |
Тест 1: входные данные: x=1, y=-1 | |
a≈-0,5714 | a=-0.571429 |
Тест 2: входные данные: x=-2, y=1 | |
a≈0,2252 | a=0.225246 |
Задача 2.
1. Постановка задачи: разработать вычисления и вывода на экран значений функций y = f1(x) и z = f2(y,a,b) для входных данных x, a, b рабочего набора. Значения рабочего набора, для которых обе функции определены, вводятся с клавиатуры. Написать программу, реализующую разработанный алгоритм.
№ | Функция y = f1(x) | Функция z = f2(y,a,b) | Рабочий набор | ||
x | a | b | |||
0,2 | 2 | 12 |
2. Математическая модель и описательный алгоритм задачи:
• ввести значения рабочего набора в переменные x, a, b;
• вычислить значение переменной у по формуле ;
• формулу вычисления значения переменной можно упростить, для чего использовать вспомогательную переменную c=sin2(a∙(2∙y2+1));
• вычислить значение переменной z через переменную c по формуле ;
• вывести полученные значения переменных у, z.
3. Блок-схема алгоритма задачи:
4. Текст программы:
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
float x, a, b, y, c, z; // описание переменных вещественного типа
printf(“\n input x=”);
scanf(“%f”,&x);
printf(“\n input a, b:”);
scanf(“%f%f”,&a,&b);
y=(fabs(log10(x))+5)/(x+4);
c=pow(sin(a*(2*y*y+1)),2);
z=(c+29*b)/(c+b);
printf(“\n output у=%f\tz=%f“,y,z);
getch();
return 0;
}
5. Тестирование:
Теоретически рассчитанные выходные значения | Практически полученное выходное значение |
Для рабочего набора входных данных: x=0,2, a=2, b=12 | |
у≈1,3569; z≈28,991594 | y=1,356898; z=28,991587 |
2. Выполнение индивидуального задания.
Постановка задачи.
Разработать линейный алгоритм и написать программу по индивидуальному заданию, используя операторы простой последовательности действий, оператор ввода для ввода значений входных данных и оператор вывода для вывода результата вычисления выражения.
Входные и выходные данные.
Все действующие в программе переменные должны быть объявлены.
Недопустимо задавать исходные (входные) данные с помощью операторов присваивания. Ввод данных с клавиатуры должен предваряться выводом соответствующего сообщения.