- •Линейные и разветвляющиеся вычислительные процессы Краткие теоретические сведения
- •Классификация данных
- •Декларирование объектов
- •Структура программы
- •Константы
- •Операции Операции выражения
- •Арифметические операции
- •Операция присваивания
- •Сокращенная запись операции присваивания
- •X##; - постфиксную.
- •Преобразование типов операндов арифметических операций
- •Операция приведения типа
- •Операции сравнения
- •Логические операции
- •Побитовые логические операции, операции над битами
- •Операция «,» (запятая)
- •Функции вывода информации
- •Функции ввода информации
- •Ввод - вывод потоками
- •Стандартные математические функции
- •Синтаксис операторов языка Си
- •Операция присваивания
- •Условные операторы
- •If (условие ) оператор1;
- •If (условие1) оператор1;
- •Условная операция "? :"
- •Оператор выбора switch
- •Программирование циклических вычислительных процессов
- •Циклические операторы while и do–while
- •Вложенные циклы
- •Программирование циклических вычислительных процессов с использованием одномерных массивов и строк Краткие теоретические сведения
- •Строки, как одномерные массивы символов
- •Указатели и операции над адресами
- •Операции над указателями (адресная арифметика)
- •Связь указателей и массивов
- •Пример 1: Упорядочить по алфавиту массив строк (не более 20) длиной не более 10 символов в каждой:
- •Многомерные массивы, динамическое распределение памяти Краткие теоретические сведения
- •Массивы указателей
- •Указатели на указатели
- •Динамическое размещение данных
- •Проверить, является ли введенная строка полиндромом (справа-налево читается также как и слева-направо).
- •Функции пользователя Краткие теоретические сведения
- •Декларация функций.
- •Вызов функции.
- •Изменение значений параметров.
- •Область действия переменных
- •Классы памяти.
- •Рекурсивные функции.
- •Операция typedef
- •Указатели на функции
- •Примеры работы с функциями
- •Программирование алгоритмов с использованием структур Краткие теоретические сведения Структуры
- •Декларация структурного типа данных
- •Создание структурных переменных
- •Обращение к полям структур
- •Вложенные структуры
- •Использование typedef
- •Массивы структур
- •Размещение структурных переменных в памяти
- •Пример на использование структур
Функции ввода информации
Функция getch () используется для ввода одиночных символов.
Функия gets () обеспечивает ввод строки символов до нажатия клавиши ENTER.
Функция scanf предназначена для форматированного ввода информации любого вида. Общий вид функции:
scanf (<управляющая строка>, < список адресов>);
Для нее, как и для функции printf (), указывается управляющая строка. Однако функция scanf(), в отличие от функции printf (), использует в списке адресов указатели на переменные, т.е. их адреса. Для обозначения указателя перед именем переменной записывается символ &, обозначающий адрес переменной. Для ввода значений строковых переменных символ & не используется. При использовании формата %s строка вводится до первого пробела. Вводить данные можно как в одной строке через пробел, так и в разных строках.
Данную особенность иллюстрирует следующий участок программы:
int course;
float grant;
char name[20];
printf ( "Укажите ваш курс, стипендию, имя \n");
scanf ( "%d%f", &course, &grant);
scanf ( "%s", name); /* & отсутствует при указании массива символов */
Ввод - вывод потоками
Поток - это абстрактное понятие расширенной версии языка Си, которое относится к любому переносу данных от источника к приемнику. Для ввода-вывода используются две переопределенные операции побитового сдвига <<, >>.
Формат записи:
cout<<идентификаторпеременной;
cin >> идентификаторпеременной;
Стандартный поток вывода cout - по умолчанию подключен к монитору, ввода cin - к клавиатуре.
Для их работы необходимо подключить файл iostream.h.
Примерпрограммы демонстрирующий работу потоков ввода-вывода:
#include<iostream.h>
#include<conio.h>
void main (void)
{
int i, j, k;
cout«" Hello!"« endl; // end line - переход на новую строку
cout«" Input i, j";
cin >> i >>j;
k = i+j;
cout << " Sum i, j = " << k << endl;
}
Манипуляторы потоков:
setprecision(n) // установка числа разрядов справа от десятичной точки выводимого значения,
// где n число разрядов.
setw(k) // установка числа позиций в которое выводится значение, где к число позиций.
Для их работы необходимо подключить файл iomanip.h.
Пример
#include <iostream.h>
#include <iomanip.h>
void main()
{
float e=56.4;
float g=1.456789;
int f=215;
cout<<setprecision(10)<<"e="<<e<<endl;
cout<<setprecision(10)<<"e="<<setw(20)<<e<<endl;
cout<<setprecision(0)<<"g="<<setw(20)<<g<<endl;
cout<<setprecision(4)<<"g="<<g<<endl;
cout<<setprecision(8)<<"g="<<setw(20)<<g<<endl;
cout<<"f="<<setw(20)<<f<<endl;
cout<<setw(20)<<"f="<<f<<endl;
}
результат выполнения программы:
e=56.4000015259
e=_ _ _ _ _ _ _ 56.4000015259
g=_ _ _ _ _ _ _ _ _ _ _ _ 1.456789
g=1.4568
g=_ _ _ _ _ _ _ _ _ _ 1.45678902
f=_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 215
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ f=215
Стандартные математические функции
Декларации математических функций языка С содержатся в файле <math.h>. В последующих записях аргументы x и y имеют тип double, параметр n имеет тип int. Аргументы тригонометрических функций задаются в радианах (2π радиан = 360). Все приведенные математические функции возвращают значение (результат) типа double.
Таблица 3
Математическая функция |
Имя функции в языке С |
Математическая функция |
Имя функции в языке С |
sqrt(x) |
arcsin(x) |
asin(x) | |
|x| (для целых) |
abs(x) |
arccos(x) |
acos(x) |
|x| (для вещественных) |
fabs(x) |
arctg(x) |
atan(x) |
ex |
exp(x) |
arctg(x/y) |
atan2(x,y) |
xy |
pow(x,y) |
sh(x)=1/2 (ex-e-x) |
sinh(x) |
ln(x) |
log(x) |
ch(x)=1/2 (ex+e-x) |
cosh(x) |
lg10(x) |
log10(x) |
tgh(x) |
tanh(x) |
sin(x) |
sin(x) |
Остаток от деления x на y |
fmod(x,y) |
cos(x) |
cos(x) |
Наименьшее целое >=x |
ceil(x) |
tg(x) |
tan(x) |
Наибольшее целое <=x |
floor(x) |