Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C.doc
Скачиваний:
29
Добавлен:
08.05.2015
Размер:
1.17 Mб
Скачать

Функции работы с временными интервалами и звуком

1. Установка или чтение информации таймера. Прототип функции:

long biostime(int cmd, long newtime);

Если cmd=0, то функция возвращает текущее значение таймера, то есть количество тиков с 0 часов 0 минут текущего дня. Количество тиков - 18.2 в секунду (точное значение - 1193180/65536).

Если cmd=1, то newtime задает новое количество тиков с 0 часов 0 минут этого дня.

2. Пауза в программе. Прототипы функций:

void sleep(int seconds);

void delay(unsigned milliseconds);

Первая функция задает паузу в секундах, вторая - в миллисекундах.

3. Выдача звука заданной частоты. Прототип функции:

void sound(unsigned frequency);

void nosound(void);

Первая функция вызывает выдачу непрерывного звукового сигнала заданной частоты, а вторая - прекращение звука.

Пример определения быстродействия процессора:

#include <stdio.h>

#include <bios.h>

#include <math.h>

#include <conio.h>

main()

{

long i,tb,te;

long j=2000000L;

/* быстродействие тригонометрии */

tb=biostime(0,0);

for (i=1; i<=j; i++) sin(0.3);

te=biostime(0,0);

printf("\nМашина вычисляет %10.0f синусов в секунду!\n",j*18.2/(te-tb));

/* умножений ... */

tb=biostime(0,0);

j=40000000L;

for (i=1; i<=j; i++) 0.3*0.5;

te=biostime(0,0);

printf("\nМашина вычисляет %10.0f умножений в секунду!\n",j*18.2/(te-tb));

/* делений ... */

tb=biostime(0,0);

for (i=1; i<=j; i++) 0.3/0.5;

te=biostime(0,0);

printf("\nМашина вычисляет %10.0f делений в секунду!\n",j*18.2/(te-tb));

/* пауза до нажатия клавиши */

getch();

}

Функции преобразования данных

1. Преобразование целого в строку. Прототипы функций:

char *itoa(int value, char *string, int radix);

char *ltoa(long value, char *string, int radix);

char *ultoa(unsigned long value, char *string, int radix);

Эти функции преобразуют значение value в строку string, заканчивающуюся нулем. radix определяет основание (от 2 до 36). Если radix=10, то первым символом строки может быть знак числа “-” для функций itoa, ltoa. Функции возвращают указатель на string.

Пример получения двоичного кода числа:

#include <stdio.h>

#include <stdlib.h>

void main(void)

{

int a;

char b[20];

printf(“\nВведите целое число: “);

scanf(“%d”,&a);

itoa(a,b,2);

printf(“Для числа %d двоичный код %s”,a,b);

}

2. Преобразование строки в целое число. Прототип функций:

int atoi(char *nptr);

long atol(char *nptr);

3. Преобразование числа с плавающей точкой в строку. Прототипы функций:

char *fcvt(double value, int, int *decpt, int *sign);

char *ecvt(double value, int ndigit, int *decpt, int *sign);

char *gcvt(double value, int ndigit, char *buf);

Функция ecvt преобразует значение value в нуль-оканчивающуюся строку из ndigit цифр и возвращает указатель на эту строку. Десятичная точка позиционируется относительно начала строки по значению decpt (отрицательное значение относится к знакам слева). Если значение отрицательное, то sign не равно нулю.

fcvt аналогична ecvt, только значение округляется для F-формата Фортрана.

gcvt пытается преобразовать число в формат f, а если не удается, в формат e с порядком при ndigit значащих цифр. Возвращает эта функция указатель на buf.

4. Преобразование строки в число с плавающей точкой. Прототип функции:

double atof(char *nptr);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]