- •Иркутский государственный университет путей сообщения кафедра “информатика” программирование на языке Cи
- •Иркутск
- •Содержание
- •Предисловие
- •Алфавит языка
- •Служебные слова
- •Константы
- •Комментарии
- •Переменные
- •Int I,j,k; //переменные I, j, k – целого типа
- •Математические функции
- •Математические константы
- •Выражения
- •Выражения целого типа
- •Примеры записи выражений целого типа:
- •Примеры вычислений выражений целого типа:
- •Выражения вещественного типа
- •Примеры записи выражений вещественного типа
- •Примеры вычислений выражений вещественного типа:
- •Операторы присваивания
- •Примеры записи операторов присваивания:
- •Ввод и вывод данных
- •Стандартный ввод-вывод
- •Посимвольный ввод-вывод
- •Ввод-вывод строк
- •Форматированный вывод
- •Форматированный ввод
- •Scanf(“формат”, аргументы);
- •Int age, rost;
- •Vasja Pupkin
- •Vasja Pupkin
- •Структура программы
- •Void main()
- •Int main()
- •Int age, rost;
- •Директивы препроцессора
- •Включение файлов
- •Int main()
- •Int age, rost;
- •Int main()
- •Int age, rost;
- •Подстановка имен
- •Макросы
- •Структуры данных
- •Массивы
- •Int vect[5];
- •Int vect[count];
- •Vect[0] vect[1] vect[2] vect[3] vect[4]
- •Int main()
- •Int temp;
- •Int matr[row][col];
- •Алгоритм и его свойства
- •Схемы алгоритмов
- •Пример записи алгоритма:
- •Базовые структуры
- •Цепочка
- •Ветвления
- •Альтернатива
- •If (условие)
- •Вариант 2 – с использованием операции конъюнкции
- •Int main()
- •Int c, y1, y2, kl, day, month, year;
- •Часто встречающиеся ошибки программирования:
- •Int main()
- •Переключатель
- •Int main()
- •Int month;
- •Часто встречающиеся ошибки программирования:
- •Бесконечные циклы
- •Циклы с предусловием
- •Int main()
- •Программа
- •Int main()
- •Программа
- •Int main()
- •Часто встречающиеся ошибки программирования:
- •Циклы с постусловием
- •Int main()
- •Int main()
- •Программа
- •Int main()
- •Int main()
- •Int main()
- •Int month;
- •Циклы с параметром
- •Действия цикла:
- •Int main()
- •Int top, bottom;
- •Int main()
- •Int num, sum, factor;
- •Int main()
- •Int main()
- •Int main()
- •Int vector_min, vector_max, temp;
- •Int vector[n];
- •Функции
- •Void main()
- •Int summa(int a, int b)
- •Int summa(int a, int b)
- •Void swap(int a, int b)
- •Int temp;
- •Void poplavok(int n, int vector[n])
- •5 * 4 * Factorial(3)
- •5 * 4 * 3 * Factorial(2)
- •5 * 4 * 3 * 2 * Factorial(1)
- •Int fibo(int n)
- •Int binom(int m, int n)
- •Int max_element(int k, int n, int vector[])
- •Int temp;
- •Void quick_sort(int left, int right, int vector[])
- •Адреса и указатели
- •Операции над указателями
- •Указатели и массивы
- •Int mass[5];
- •Int trio[5][2][3];
- •Указатели и функции
- •Int sloshenie(int a, int b);
- •Int sloshenie(int a, int b)
- •Int main()
- •Указатели и строки
- •Функции для работы со строками
- •Vtorokursnik
- •Vtorokursnik
- •Itoa(I, str, 16);
- •Текстовые файлы
- •Int vector[k];
- •Vector_1:
- •Vector_2:
- •Int ocenka;
- •Imja: Vasilij
- •Imja: Ivan
- •Int ocenka;
- •Бинарные файлы
Вариант 2 – с использованием операции конъюнкции
s = z; s = z;
ЕСЛИ (x > y) & (x > z) if ((x > y) && (x > z))
ТО s = x; s=x;
ЕСЛИ (y > x) & (y > z) if ((y >x) && (y > z))
ТО s = y; s=y;
2.по заданной дате (день, месяц, год) определить день недели, приходящийся на нее:
#include <stdio.h>
#include <conio.h>
#include <math.h>
Int main()
{
Int c, y1, y2, kl, day, month, year;
printf(“\nВведите день: ”);
scanf(“%d”, &day);
printf(“\nВведите месяц: ”);
scanf(“%d”, &month);
printf(“\nВведите год: ”);
scanf(“%d”, &year);
kl=0;
c=0;
y1=year/100;
y2=year-y1*100;
if ((y2==0) && (y1%4==0))
c=1;
if ((y2!=0) && (y2%4)==0))
c=1;
if ((c==1) && (month==1) ||(month==2))
kl=1;
if ((c==0) && (month==1) || month==2))
kl=2;
c=ceil(365.25*y2) + ceil(30.56*month) + day + kl;
c %= 7;
c += 3;
if (c==1)
printf(“\nЭто понедельник”);
if (c==2)
printf(“\nЭто вторник”);
if (c==3)
printf(“\nЭто среда”);
if (c==4)
printf(“\nЭто четверг”);
if (c==5)
printf(“\nЭто пятница”);
if (c==6)
printf(“\nЭто суббота”);
if (c==7)
printf(“\nЭто воскресенье”);
return 0;
}
По принятому в Сисоглашению, ветвьelseвсегда относится к ближайшему предшествующему ему незанятомуif:
if (n>0)
if (m % n > 2)
m -= n;
else m += n;
else m %= n;
В данном случае ветвь else m += nотносится кif (m % n > 2),а ветвьelse m %= nотносится кif (n > 0).
При переходе с ПаскалянаСипрограммисты часто допускают ошибки при формировании условия в оператореif, путая две операции:
=присваивания и
==сравнения:
if (a==b)
printf(“\nЭти величины равны между собой”);
else printf(“\nЭти величины не равны между собой”);
Это правильное сравнение значений двух переменных.
Перепишем это сравнение с ошибкой (компилятором не определяется):
if (a=b)
printf(“\nЭти величины равны между собой”);
else printf(“\nЭти величины не равны между собой”);
В этом случае сначала переменной aбудет присвоено значение переменнойb, а потом будет проверено, какое именно значение присвоено. Если это значение отлично от нуля (неложь), то выведется сообщение:
Эти величины равны между собой
Если это значение равно нулю (ложь) – то сообщение:
Эти величины не равны между собой
Хотя и в этом случае обе переменные будут иметь одинаковые значения.
Часто встречающиеся ошибки программирования:
1.Использование else без первой ветви:
if (n > m)
else . . .
2. Использование открывающей фигурной скобки{ без закрывающей}и наоборот.
3.Отсутствие точки с запятой перед словомelse:
if (n > m)
a=1
else a=0;
4. Точка с запятой после условия:
if (n > m);
a=1;
else a=0;
Отсутствие точки с запятой перед закрывающей фигурной скобкой }или наличие точки с запятой после нее:
if (c < 2.5)
{
a=sin(c);
b=fabs(c);
};
else
{
a=cos(c);
b=1.0/c
}
Пример
Задан график функции f(x)– полуокружность радиусаR=1:
Определить:
Значение функции yпри заданном значении аргументаx.
Площади фигур слева и справа от линии разреза.
По теореме Пифагора:
Площадь фигуры слева от линии разреза определяется суммой площадей прямоугольного треугольника:
s1 = 0,5 x y
и сектора:
s2 = 0,5 R2 (α – sin α),гдеα– центральный угол в радианах,
причем
α = arcsin(y/R).
Площадь всей фигуры (полукруга) определяется выражением:
S = π R2/2.
Программа решения задачи:
#include <stdio.h>
#include <conio.h>
#include <math.h>