Опубликован: 14.12.2010 | Доступ: свободный | Студентов: 3125 / 711 | Оценка: 4.53 / 4.12 | Длительность: 26:28:00
Лекция 3:

Переменные и базовые типы данных языка С

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

Задание 1

  1. В качестве вводимых символов используйте начальные буквы своей фамилии (латинского алфавита). В отчет вставьте полученный результат.
  2. В качестве вводимой строки используйте свою фамилию и имя (буквами латинского алфавита). В отчет вставьте полученный результат.
  3. Подсчитайте количество символов, на которые производит отступ от левого края символ табуляции \t. Для вывода строки предусмотрите табулированный вывод с помощью спецификатора формата %xs, где х – требуемое число позиций отступа.
  4. Объявите массив символов в размере одного символа и введите строку с помощью функции gets_s(), превышающую число 1.
  5. Запустите программу без функций _flushall(). В отчет вставьте полученный результат
  6. Ввод чисел произведите со знаком ("+" и "–"). Введите только целые числа. Введите только вещественные числа.
  7. Сложите два вещественных числа типа float с десятью знаками после десятичной точки. Выведите и проанализируйте результат сложения. Объясните результат.
  8. Изучите работу функции puts() и примените ее вместо функции printf(), которая использовалась в режиме сообщений. В отчет вставьте полученный результат. Объясните результат.

Пример 2. Напишите программу вычисления алгебраических выражений с приведением типов char, int, float, double.

Возможный программный код решения примера:

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main (void) { 
char ch;
int a, b;
float x;
double y, z;
ch = 'C';
a = 2; b = 5;
x = 5.5F;
y = 6.0 ;
z = ch + a + b + x + y;

// Результат приведения типов
printf("\n\t The result of the conversion types: %lf\n", z);

// Явное преобразование типов 
z = (double) ch + (double) a + (double) b  + (double) x + y;

printf("\n\t The apparent conversion types: %lf\n", z);
z = sqrt((double)a/b);
printf("\n\t z = sqrt(%d/%d) = %lf\n", a, b, z);
printf("\n\t z = lg(%d/%d) = %lf\n", a, b, log10(z));
printf("\n\t z = ln(%d/%d) = %lf\n", a, b, log(z));

	printf("\n Press any key: ");
	_getch();
	return 0;
}

В программу включена библиотека математических функций math.h, в которой sqrt()функция извлечения квадратного корня, log10() – логарифмическая функция по основанию 10, log()функция натурального логарифма. Все эти функции возвращают результат типа double и вычисляют от числа (выражения) также типа double.

Результат выполнения программы показан на рис. 2.3.

Вычисления с приведением типов

Рис. 2.3. Вычисления с приведением типов

Задание 2

  1. В качестве вводимого символа используйте первую букву своей фамилии (буквами латинского алфавита). В отчет вставьте полученный результат.
  2. Переменную у задайте в виде у = 6.
  3. Вычислите заданный квадратный корень без явного приведения типов.
  4. Определите переменные с суффиксами U, F, L и произведите с ними арифметические действия.
  5. Вычислите логарифм от числа 10Х по основанию , где Х – номер компьютера, за которым выполняется лабораторная работа. Выполните тестовый пример для проверки вычислений, т.е. для заданного основания подберите число, от которого логарифм с заданным основанием даст целое число. Например, log10(100.0) = 2.0000.

Пример 3.Напишите программу вычисления площади круга и его длины окружности по заданному радиусу, вводимого пользователем с клавиатуры, а также вывода на консоль максимальных значений чисел типа int, float и double.

Для решения примера следует воспользоваться математической библиотекой компилятора, т. е. включить в программу заголовочный файл <math.h>., а также заголовочные файлы <limits.h>, <float.h>.

Программный код решения примера:

#include <stdio.h>
#include <conio.h>

// Для числа пи 
#define _USE_MATH_DEFINES
#include <math.h>

#include <limits.h>
#include <float.h>

int main (void)
{
double R;
double Sr, Lr;

printf("\n Enter a real greater than zero: ");
scanf_s("%lf", &R);
Sr = M_PI*R*R;
Lr = 2*M_PI*R;
printf("\n Area of a circle of radius R = %g is %g", R, Sr);
printf("\n The length of a circle of radius R = %g is %g",R,Lr);
puts("");

printf("\n  Maximum integer: %d\n ", INT_MAX);
printf(" Maximum real number of float: %g\n ", FLT_MAX);
printf("Maximum real number type double: %g\n ", DBL_MAX);

printf("\n Press any key: ");
	_getch();
	return 0;
}

В программу включена константа _USE_MATH_DEFINES для работы с числом M_PI ( \pi ). Остальные константы можно найти в справочной документации компилятора. Например, через меню Help \to Index системы MS Visual Studio 2008.

Функция scanf_s() определена в компиляторе языка С системы MS Visual Studio 2008. С этой функцией компилятор не выдает предупреждений.

Результат выполнения программы показан на рис. 2.4.

Пример использования предопределенных констант

Рис. 2.4. Пример использования предопределенных констант

Задание 3

  1. Напишите программу по вычислению площади эллипса. Данные для расчета должны вводиться с клавиатуры пользователем.
  2. Рассчитайте величины lg(exp(100)) и ln(exp(100)), пользуясь стандартными функциями математической библиотеки (math.h) .
  3. Используя справочную документацию компилятора, в программе предусмотреть вывод минимальных значений указанных типов данных.
  4. Используя справочную документацию компилятора, в программе предусмотреть вывод максимальных и минимальных значений для следующих типов даны: char, short int, long int.

Контрольные вопросы

  1. Для каких типов данных используются суффиксы при инициализации переменных?
  2. Чем отличаются функции printf() и puts() при консольном выводе информации?
  3. Для чего в программах на С используется заголовочный файл math.h?
  4. При использовании функции gets_s() с какими разделителями может происходить считывание информации с консоли?
  5. Какой тип данных возвращает функция gets_s() при считывании информации?
  6. Как осуществляется считывание с консоли информация с помощью функции scanf_s()?
  7. Как с консоли осуществляется считывание последовательности различных типов данных с помощью одной функции scanf_s()?
  8. Как выводится на консоль последовательность различных типов данных с помощью одной функции printf()?
  9. Как осуществляются автоматическое и принудительное приведение типов в языке С?
  10. Какие машинно-зависимые типы данных имеются в языке С?
  11. К каким типам данных относятся литеры
5, 5.0, 5.0F, "5", '5', 5u, 5L, 5.0L?
< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов