- •Лабораторная работа 1-10
- •3.8. Алфавит языкаC, идентификаторы, ключевые слова, комментарии
- •3.9. Константы вC
- •3.10. Объявление простых переменных
- •3.11. Арифметические операторы и операторы присваивания
- •3.12. Преобразования типов
- •3.13. Стандартная библиотека языка c
- •3.14. Форматный вывод данных в c
- •4. Порядок выполнения работы
- •5. Содержание отчета
- •6. Вопросы для самоконтроля
3.13. Стандартная библиотека языка c
Стандартная библиотека языка Cразбита по группам функций, например, математические функции, функции ввода-вывода и т.д. Вызов необходимой для использования в конкретной программе группы функций осуществляется по директиве препроцессора #include, имеющий следующий формат:
#include <головной-файл>
где головной-файл – имя головного файла для группы функций (например,math.hдля математических функций).
Оператор #includeдля группы функций должен быть задан до их использования в программе (принято обычно все операторы#includeдля вызова разделов библиотек размещать в самом начале программы).
3.14. Форматный вывод данных в c
Функции ввода-вывода определены в головном файле stdio.h.
Функция форматного вывода printf() стандартной библиотекиCвыводит символы и формирует и выводит задаваемые аргументами значения на дисплей. Функция имеет переменное число аргументов и вызывается следующим образом:
printf("строка-формата" [, аргумент-1 [,аргумент-2...]])
где строка-формата – символьная строка, состоящая из обычных символов, специальных символов и, если за строкой формата следует один или несколько аргументов, спецификаций полей формата вывода (по одному для каждого аргумента).
Простая спецификация формата содержит только символ "%" и символ выводимого типа. Основные символы типов приведены в следующей таблице:
Сим-вол типа |
Тип аргумента |
Вид печати |
d |
int |
Десятичное целое число. |
i |
int signed |
Десятичное целое число со знаком. |
u |
int unsigned |
Десятичное целое число без знака |
o |
int |
Восьмеричное число без знака (без 0в начале числа). |
x, X |
int |
Шестнадцатеричное число без знака (без 0xили0Xв начале). |
c |
int или char |
Единичный символ после преобразования в unsigned char. |
s |
char * |
Строка символов. |
f |
floatили double |
Десятичное число с точкой и со знаком "-" (если число отрицательное). |
e, E |
floatили double |
Десятичное число в экспоненциальной форме (целая часть, дробная часть и, после eилиE показатель степени со знаком). |
g, G |
float; double |
В зависимости от величины и точности числа выводится либо по типу f, либо по типамeилиE. |
% |
% |
Выводится символ "%". |
Если число спецификаций формата больше числа аргументов, излишние спецификации игнорируются. В обратном случае результат вывода не определен.
4. Порядок выполнения работы
Скопируйте в свою папку программу LAB10.Cиз папкиC Examplesв папкеРабочая папка.
Запустите Dev-C++ для программыLAB10.C.
Программа определяет наибольший общий делитель для натуральных (целых) чисел mиnс использованием следующего алгоритма:
Ввод чисел mиn.
Присваивание переменной x1значения переменнойm, а переменнойx2– значения переменнойn.
Если значения переменных x1иx2равны друг другу, вывод значенийm,nиx1, а затем выход из программы, иначе выполнение пунктов 4-5.
Если x1большеx2, уменьшить значениеx1на значениеx2, иначе уменьшить значениеx2на значениеx1.
Переход к пункту 3.
Найдите в тексте программы оператор intи получите по нему справку. Откройте текстовый редакторБлокноти скопируйте в его окно содержимое справки с заголовком "Ключевое словоint".
Найдите в тексте программы оператор returnи получите по нему справку.Скопируйте в окно текстового редактораБлокнотсодержимое справки с заголовком "Ключевое словоreturn".
Найдите в тексте программы функцию printf()и получите по ней справку. Скопируйте в окно текстового редактораБлокнотсодержимое справки (до пунктаMore About printf) с заголовком "Функцияprintf()".
Найдите в тексте программы функцию getchar()и получите по ней справку. Скопируйте в окно текстового редактораБлокнотсодержимое справки (до пунктаMore About printf) с заголовком "Функцияgetchar()".
Запустите программу на выполнение (программа содержит ошибку). Найдите строку с ошибкой и исправьте ошибку (xx1наx1).
Повторно запустите программу на выполнение. Введите значения тестовые значения mиn:42и28. Обратите внимание, что программа работает неправильно (наибольшим общим делителем чисел42и28на самом деле является число14).
Запустите программу в режиме отладки. Установите точку прерывания на десятой строке программы – операторе:
printf("\nProgram start);
Задайте переменные x1иx2как наблюдаемые и проверьте их значения в точке прерывания.
Продолжите выполнения программы по шагам до оператора
printf ("\nThe greatest common divisor %d and %d: %d\n",m,n,x1);
Проверьте значение переменных в этой точке и выясните, почему значение x1стало неверным (обратите внимание на операторifв строке 12).
Исправьте ошибку в программе и заново запустите программу с теми же тестовыми значениями в режиме отладки с той же точки прерывания с пошаговым выполнением.Убедитесь, что программа выдает правильное значение наибольшего общего делителя.
Заново запустите программу на выполнение со следующими двумя числами для своего варианта: 1) 121и44; 2)108и24; 3)144и56; 4)136и48; 5)192и36; 6)168и98; 7)176и66; 8)78и144; 9)374и68; 10)372и48; 11)98и42; 12)256и48; 13)714и98; 14)248и64; 15)372и84.
Покажите преподавателю программу и результаты ее работы и скопируйте текст программы и результат работы программы в окно текстового редактора Блокнотс заголовками "Текст программы LAB10.C" и "Результат работы программы LAB10.C".
Напишите программу (имя программы латинскими буквами) в соответствии со своим вариантом, а затем выполните ее отладку и тестирование (задание значений – с помощью операции присваивание, вывод результатов – с помощью функции printf()):
Номер варианта |
Исходные данные |
Операция |
Вывод | ||
Имя |
Тип |
Значение | |||
1 |
x1 |
double |
3.5 |
xравен целой частиx1+x2 |
x1, x2 и x |
x2 |
double |
-1.8 | |||
x |
double |
-- | |||
2 |
x1 |
double |
8.4 |
xравен дробной частиx1+x2 |
x1, x2 и x |
x2 |
double |
-1.3 | |||
x |
double |
-- | |||
3 |
i |
double |
8.7 |
xравен целой частиi*j |
i, j и x |
j |
double |
-12 | |||
x |
double |
-- | |||
4 |
u1 |
double |
13.3 |
uравен дробной частиu1*u2 |
u1, u2 и u |
u2 |
double |
-7.8 | |||
u |
double |
-- | |||
5 |
a1 |
double |
-7.8 |
aравен целой частиa1/a2 |
a1, a2 и a |
a2 |
double |
-4.3 | |||
a |
double |
-- | |||
6 |
b1 |
double |
14.6 |
bравен дробной частиb1/b2 |
b1, b2 и b |
b2 |
double |
5.7 | |||
b |
double |
-- | |||
7 |
w1 |
double |
118.6 |
w=w1+ целая частьw2 |
w1, w2 и w |
w2 |
double |
1.52·102 | |||
w |
double |
-- | |||
8 |
i1 |
int |
15 |
z=i1/i2(результат- вещественное число) |
i1, i2 и z |
i2 |
int |
6 | |||
z |
double |
-- | |||
9 |
d1 |
double |
18.3 |
dравен остатку отd1/d2 |
d1, d2 и d |
d2 |
double |
4.8 | |||
d |
double |
-- | |||
10 |
y |
int |
8 |
y1=y++ +5 y=8 y2=++y +5 |
y, y1 и y2 |
y1 |
int |
-- | |||
y2 |
int |
-- |
Номер варианта |
Исходные данные |
Операция |
Вывод | ||
Имя |
Тип |
Значение | |||
11 |
t |
int |
14 |
t1=t-- +7 t=14 t2=--t +7 |
t, t1 и t2 |
t1 |
int |
-- | |||
t2 |
int |
-- | |||
12 |
v1 |
double |
14.3 |
vравно значению первой цифры после десятичной точки вv1/v2 |
v1, v2, v1/v2 и v |
v2 |
double |
3.1 | |||
v |
int |
-- | |||
13 |
s1 |
double |
144.2 |
sравно значению первой цифры в целой частиs1/s2 |
s1, s2, s1/s2 и s |
s2 |
double |
7.3 | |||
s |
int |
-- | |||
14 |
a1 |
int |
1 |
Условная операция: если x>0, тоy=a1, иначеy=a2 |
x, a1, a2 и y |
a2 |
int |
-1 | |||
x |
int |
-3 | |||
y |
int |
-- | |||
15 |
g1 |
int |
0 |
Условная операция: если g – четное, тоz=g1, иначеz=g2 |
g, g1, g2 и z |
g2 |
int |
1 | |||
g |
int |
4 | |||
z |
int |
-- |
Покажите преподавателю программу и результаты ее работы и скопируйте текст программы и результат работы программы в окно текстового редактора Блокнотс заголовками "Текст программы имя-программы" и "Результат работы программы имя-программы".
Скопируйте полученный в окне текстового редактора Блокнотдокумент на свою дискету или флэш-карту.