
- •Простые типы данных
- •Модификаторы
- •1. Запись целых констант
- •2. Запись вещественных констант
- •3. Запись символьных констант
- •1. Арифметические операции над данными целочисленных типов
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Простые типы данных
- •Модификаторы
- •Операция присваивания
- •Диапазоны значений простых типов данных для ibm pc
- •5. Структура программы. Функции.
- •2. Формальные параметры функций
- •3. Возвращаемые значения функций
- •2.2 Пример простой программы на языке Си.
- •Управляющие конструкции
- •Ветвления
- •Циклы while, do.. .While и for
- •Теоретичсекий зачет по операторам цикла
- •Графика
- •Указатели
- •Преобразование типов
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Задание:
- •Операции над указателями.
- •Структуры
- •Объединения
- •. Описания типов (typedef)
- •Поразрядные операции (bitwize)
Преобразование типов
Если в выражениях встречаются операнды различных типов, то они преобразуются к общему типу в соответствии с небольшим набором правил. В общем, автоматически производятся только преобразования, имеющие смысл, такие как, например, преобразование целого в плавающее в выражениях типа F+I.
Во-первых, типы CHAR и INT могут свободно смешиваться в арифметических выражениях: каждая переменная типа CHAR автоматически преобразуется в INT. Это обеспечивает значительную гибкость при проведении определенных преобразований символов. Примером может служить функция ATOI, которая ставит в соответствие строке цифр ее численный эквивалент. ATOI(S)
Неявные арифметические преобразования работают в основном, как и ожидается. В общих чертах, если операция типа + или *, которая связывает два операнда (бинарная операция), имеет операнды разных типов, то перед выполнением операции "низший" тип преобразуется к "высшему" и получается результат "высшего" типа. Более точно, к каждой арифметической операции применяется следующая последовательность правил преобразования.
- Типы CHAR и SHORT преобразуются в INT, а FLOAT в DOUBLE.
- Затем, если один из операндов имеет тип DOUBLE, то другой преобразуется в DOUBLE, и результат имеет тип DOUBLE.
- В противном случае, если один из операндов имеет тип LONG, то другой преобразуется в LONG, и результат имеет тип LONG.
- В противном случае, если один из операндов имеет тип UNSIGNED, то другой преобразуется в UNSIGNED и результат имеет тип UNSIGNED.
- В противном случае операнды должны быть типа INT, и результат имеет тип INT.
Подчеркнем, что все переменные типа FLOAT в выражениях преобразуются в DOUBLE; в "C" вся плавающая арифметика выполняется с двойной точностью.
Преобразования возникают и при присваиваниях; значение правой части преобразуется к типу левой, который и является типом результата. Символьные переменные преобразуются в целые либо со знаковым расширением ,либо без него, как описано выше. Обратное преобразование INT в CHAR ведет себя хорошо - лишние биты высокого порядка просто отбрасываются. Таким образом
INT I;
CHAR C;
I = C;
C = I;
значение 'с' не изменяется. Это верно независимо от того, вовлекается ли знаковое расширение или нет.
Если х типа FLOAT, а I типа INT, то как х = I; так и I = х; приводят к преобразованиям; при этом FLOAT преобразуется в INT отбрасыванием дробной части. Тип DOUBLE преобразуется во FLOAT округлением. Длинные целые преобразуются в более короткие целые и в переменные типа CHAR посредством отбрасывания лишних битов высокого порядка.
Так как аргумент функции является выражением, то при передаче функциям аргументов также происходит преобразование типов: в частности, CHAR и SHORT становятся INT, а FLOAT становится DOUBLE. Именно поэтому мы описывали аргументы функций как INT и DOUBLE даже тогда, когда обращались к ним с переменными типа CHAR и FLOAT.
Фактически точный смысл операции перевода можно описать следующим образом: выражение как бы присваивается некоторой переменной указанного типа, которая затем используется вместо всей конструкции.
Упражнение
Составьте программу для функции HTOI(S), которая преобразует строку шестнадцатеричных цифр в эквивалентное ей целое значение. При этом допустимыми цифрами являются цифры от 1 до 9 и буквы от а до F.
Функции преобразования типов
Atoi (s) |
Строка -> в целое |
Itoa(n,s,count) |
Целое –> в строка |
Atof (s) |
Строка -> в число с плав. Точкой |
С помощью функции sprintf(buf,”msg”, x)можно выполнять преобразование типов из x в buf. Пример
#include<stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <graphics.h>
#include <math.h>
int gd=DETECT,gr;
main()
{initgraph(&gd,&gr,"..\\bgi");
int x1=5,y1=2,x2=6,y2=8;
char s[10];
float x;
x=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
sprintf(s," %f ",x);
outtextxy(100,100,s);
getchar();
closegraph;
}
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Задание:
задать целую переменную, переменную с плавающей точкой и строку и
выполнить преобразования типов с помощью функций itoa,atoi,atof
С помощью функции sprintf выполнить преобразования разных типов и вывести на экран
3. Задан радиус окружности. Вычислить и вывести в графическом режиме с надписями:
- длину окружности и площадь круга
4. Вершины треугольника заданы целочисленными координатами. Вычислить:
- длины сторон треугольника
- периметр и площадь
- вывести все в графическом формате с надписями вершин, длинами сторон и значениями периметра и площади.
5. Вывести на экран график функции y=sin (x)
Лабораторные работы по программированию на Си
1. Определить строку, состоящую из своей фамилии. имени , отчества и года рождения . Вывести на экран:
a) отдельно по словам разным цветом б) фамилию и инициалы в) количество прожитых дней
2. Cоставить программу, использующую оператор присваивания, арифметические операции и операцию sizeof.
3.Составить программу, вычисляющую кубы чисел, заданных разными способами.
4. Написать программу, выводящую на экран строковую константу и число, состоящее из цифр вашего дня рождения, заданное в виде десятичной, восьмеричной и шестнадцатеричной константы.
5. Составить программу выбора всех четных чисел от 1 до 1000. Составить и получить распечатку программы выбора всех чисел, заканчивающихся на цифру 5, от 1 до 1000.
6. Составить программу, решающую задачу вычисления максимального и минимального значений с использованием функций max и min. В качестве входных значений для указанных функций задаются массив чисел с плавающей точкой и размер такого массива.
7. Построить 10 вложенных квадратов окрашенных поочередно в зеленый и красные цвета.
8. Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями: i-й столбец становится i-й строкой. Например, транспонирование матрицы:
0 1 2 0 3 6
3 4 5 дает матрицу 1 4 7
6 7 8 2 5 8
Дана квадратная матрица размера n*n. Получить транспонированную матрицу.
Лабораторные работы по программированию на Си
1. Определить строку, состоящую из своей фамилии. имени , отчества и года рождения . Вывести на экран:
a) отдельно по словам разным цветом б) фамилию и инициалы в) количество прожитых дней
2. Cоставить программу, использующую оператор присваивания, арифметические операции и операцию sizeof.
3.Составить программу, вычисляющую кубы чисел, заданных разными способами.
4. Написать программу, выводящую на экран строковую константу и число, состоящее из цифр вашего дня рождения, заданное в виде десятичной, восьмеричной и шестнадцатеричной константы.
5. Составить программу выбора всех четных чисел от 1 до 1000. Составить и получить распечатку программы выбора всех чисел, заканчивающихся на цифру 5, от 1 до 1000.
6. Составить программу, решающую задачу вычисления максимального и минимального значений с использованием функций max и min. В качестве входных значений для указанных функций задаются массив чисел с плавающей точкой и размер такого массива.
7. Построить 10 вложенных квадратов окрашенных поочередно в зеленый и красные цвета.
8. Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями: i-й столбец становится i-й строкой. Например, транспонирование матрицы:
0 1 2 0 3 6
3 4 5 дает матрицу 1 4 7
6 7 8 2 5 8
Дана квадратная матрица размера n*n. Получить транспонированную матрицу.
Лабораторные работы по программированию на Си
1. Определить строку, состоящую из своей фамилии. имени , отчества и года рождения . Вывести на экран:
a) отдельно по словам разным цветом б) фамилию и инициалы в) количество прожитых дней
2. Cоставить программу, использующую оператор присваивания, арифметические операции и операцию sizeof.
3.Составить программу, вычисляющую кубы чисел, заданных разными способами.
4. Написать программу, выводящую на экран строковую константу и число, состоящее из цифр вашего дня рождения, заданное в виде десятич1ной, восьмеричной и шестнадцатеричной константы.
5. Составить программу выбора всех четных чисел от 1 до 1000. Составить и получить распечатку программы выбора всех чисел, заканчивающихся на цифру 5, от 1 до 1000.
6. Составить программу, решающую задачу вычисления максимального и минимального значений с использованием функций max и min. В качестве входных значений для указанных функций задаются массив чисел с плавающей точкой и размер такого массива.
7. Построить 10 вложенных квадратов окрашенных поочередно в зеленый и красные цвета.
8. Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями: i-й столбец становится i-й строкой. Например, транспонирование матрицы:
0 1 2 0 3 6
3 4 5 дает матрицу 1 4 7
6 7 8 2 5 8
Дана квадратная матрица размера n*n. Получить транспонированную матрицу.
Лабораторные работы по программированию на Си
1. Определить строку, состоящую из своей фамилии. имени , отчества и года рождения . Вывести на экран:
a) отдельно по словам разным цветом б) фамилию и инициалы в) количество прожитых дней
2. Cоставить программу, использующую оператор присваивания, арифметические операции и операцию sizeof.
3.Составить программу, вычисляющую кубы чисел, заданных разными способами.
4. Написать программу, выводящую на экран строковую константу и число, состоящее из цифр вашего дня рождения, заданное в виде десятичной, восьмеричной и шестнадцатеричной константы.
5. Составить программу выбора всех четных чисел от 1 до 1000. Составить и получить распечатку программы выбора всех чисел, заканчивающихся на цифру 5, от 1 до 1000.
6. Составить программу, решающую задачу вычисления максимального и минимального значений с использованием функций max и min. В качестве входных значений для указанных функций задаются массив чисел с плавающей точкой и размер такого массива.
7. Построить 10 вложенных квадратов окрашенных поочередно в зеленый и красные цвета.
8. Транспонированием квадратной матрицы называется такое ее преобразование, при котором строки и столбцы меняются ролями: i-й столбец становится i-й строкой. Например, транспонирование матрицы:
0 1 2 0 3 6
3 4 5 дает матрицу 1 4 7
6 7 8 2 5 8
Дана квадратная матрица размера n*n. Получить транспонированную матрицу.