Программа начинается с включения файлов:
#include <stdio.h> #include <math.h>в которых находятся описания функций ввода - вывода и математических функций соответственно.
Далее открываем главную функцию:
int main(void)Включаем описания переменных (см. п.5.2):
double x,y; double a=12.5, b=1.3; double c=14.1, d=2.7; double t1, t2; double ax;Вводятся значения для переменных x и y:
printf("Введите x, y >"); scanf("%lf %lf",&x,&y);Далее вычисляется первое промежуточное значение:
ax=a*x;и первый результат:
t1=(b*log(ax+b)/a+d*log(y*x+d)/y)/c;Вычисляется второй промежуточный результат:
ax=sqrt((c-b)*(c+b))*tan(ax);и вычисляется второй окончательный результат:
t2=log((ax+b)/(ax-b))/2/a/b;Полученные результаты выводятся на экран:
printf("t1 = %lg\n",t1); printf("t2 = %lg\n",t2);Отладка программы
Задание 1. При отладке программы можно использовать пошаговый режим отладки с отслеживанием значений переменных - тех, которые вводятся. Если возникнут проблемы с вводом переменных, есть смысл вводить каждую переменную отдельным оператором.
Аккуратный формат таблицы достигается несколькими запусками программы с последующим выравниванием столбцов по результатам запуска.
|
|
Задание 2. При отладке программы можно проверять правильность выполнения каждой операции. Для этого сложные операторы-выражения, разбиваются на последовательность операторов-выражений, в каждом из которых выполняется только одна операция. Результат каждой такой операции выводится на экран или отслеживается в пошаговом режиме.
Результаты работы программы
Задание 1.
При работе программы на экран было выдано следущее:
1. Введите: название, школу, количество, площадь > Тодайдзи Т 220 368.8 2. Введите: название, школу, количество, площадь > Якусидзи С 50 54.7 3. Введите: название, школу, количество, площадь > Дайаедзи Д 10 12.2------------------------------------------------------------------------|Буддийские монастыри Японии периода Нара ||------------------------------------------------------------------------|| Название--------- | Школа --| Количество|Площадь земли|| | | монахов -- | (га) ||----------------------|------------|----------------|--------------------|| Тодайдзи | Т | 220 | 368.8 || Якусидзи | С | С | 50 | 54.7 || Дайаедзи | Д | Д | 10 | 12.2 ||------------------------------------------------------------------------|| Примечание: Т - Тендай; С - Сингон; || Д - Дзедзицу |-------------------------------------------------------------------------
Задание 2.
При работе программы на экран было выдано следущее:
Введите x, y >3.3 1.1t1 = 0.348897t2 = 0.0133405 Задание для продвинутых: ** 1. Создать интерфейс позволяющий выбрать один из вариантов расчета параметров, которые будут заданы в виде таблицы (выбор должен осуществляться по порядковому номеру и по типу выражения):П/п | Тип | Выражение |
1 | Логарифм | t=1/(b^3)*(ln(y/x – a^2*x^2/(2*y^2))) |
2 | Корень | t=1/(b^0,5)*(y^0,5/x – a^0,5*x^2/(2*y^0,5))) |
3 | Тригонометрия | t=cos(bx+0,5)*sin(y/x – a^0,5*x^2) |
Приложение 1. Базовые типы данных языка С
|
|
Название типа | Пояснения | Диапазон значений |
short | Краткое целое число | -128... 127 |
unsigned short | Краткое целое число без знака | 0... 255 |
int | Целое число | -32768... 32767 |
unsigned int | Целое число | 0... 65535 |
long | Длинное целое число | -230... 230-1 |
unsigned long | Длинное целое число без знака | 0... 231-1 |
char | Один символ | символы кода ASCII |
char[ ] | Строка | |
float | Число с плавающей точкой | 3.4 10-38... 3.4 10+38 |
double | Число с плавающей точкой двойной точности | 1.7 10-308... 1.7 10+308 |
Приложение 2. Некоторые функции стандартного ввода-вывода
Функции стандартного ввода - вывода описаны в файле stdio.h.
printf() - форматный вывод на экран:
int printf(char *format, <список вывода>);Первый параметр является символьной строкой, которая задает спецификации формата. Остальные параметры - перечисление переменных и выражений, значения которых выводятся. Каждая спецификация формата имеет вид (параметры в квадратных скобках необязательны):
%[flags][width][.prec][F|N|h|l]typetype - | тип спецификации |
d или i | целое десятичное число со знаком |
u | десятичное число без знака |
x | целое 16-ричное число без знака |
f | число с плавающей точкой |
e | число в E-форме |
g | число с плавающей точкой или в E-форме |
c | один символ |
s | строка |
% | символ % |
flags - | признак выравнивания: |
+ или пусто | выравнивание по правому краю |
- | выравнивание по левому краю |
width - | целое число - общая ширина поля. Если это число начинается с цифры 0, вывод дополняется слева нулями до заданной ширины. В заданную ширину входят все символы вывода, включая знак, дробную часть и т.п. |
prec - | целое число, количество знаков после точки при выводе чисел с плавающей точкой |
F - | соответственный элемент списка вывода является дальним указателем |
N - | соответственный елемент списка вывода является близким указателем |
l - | соответствующий елемент списка вывода является long int или double |
scanf() - форматный ввод с клавиатуры:
int scanf(char *format, <список ввода>);Первый параметр является символьной строкой, которая задает спецификации формата (см. функцию printf()). Остальные параметры - перечисление адресов переменных, в которые вводятся данные. В этом списке перед именами всех переменных, кроме тех, которые вводятся по спецификации типа %s, должен стоять символ &.
putchar() - вывод одного символа на экран:
int putchar(int ch);Параметр функции - код символа, который выводится. При успешном выполнении функция возвращает этот же код, при неуспешном - EOF.
getchar() - ввод одного символа с клавиатуры:
int getchar(void);Функция возвращает код введенного символа.
puts() - вывод строки символов на экран:
int puts(char *string);Параметр функции - указатель на начало той строки, из которой выводятся данные. Функция возвращает количество выведенных символов.
gets() - ввод строки символов с клавиатуры:
char *gets(char *string);Параметр функции - указатель на начало той строки, в которую вводятся данные. Функция возвращает тот же самый указатель.
Приложение 3. Некоторые стандартные математические функции.
Стандартные математические функции находятся в файле math.h.
abs - абсолютное значение целого числа - |x|
int abs(int x);labs - абсолютне значення "длинного" целого числа - |x|:
long labs(long x);fabs - абсолютное значение числа с плавающей точкой - |x|:
double fabs(double x);sqrt - извлечение квадратного корня:
double sqrt(double x);pow - возведение в степень:
double pow(double x, double y);cos - косинус - cos x (здесь и далее x задается в радианах):
double cos(double x);sin - синус - sin x:
double sin(double x);tan - тангенс - tg x:
double tan(double x);acos - арккосинус - arccos x:
double cos(double x);asin - арксинус - arcsin x:
double sin(double x);atan - арктангенс - arctg x:
double atan(double x);atan2 - арктангенс - arctg x/y:
double atan2(double x, double y);exp - експонента:
double exp(double x);log - натуральный логарифм - ln x:
double log(double x);log10 - десятичный логарифм - log10x:
|
|