Студопедия — ПРАКТИЧЕСКАЯ ЧАСТЬ
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ПРАКТИЧЕСКАЯ ЧАСТЬ






В примерах будем приводить только тексты программ и результаты их выполнения. Программы должны быть написаны в Visual Studio (см. тему 1).

Пример 1. Написать программу ввода символа, строки, действительных и целых чисел. Действительные числа сложить, целые перемножить. Для действительных чисел необходимо использовать типы float и double.

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

#include <stdio.h> #include <conio.h> int main (void) { // Объявления char ch, str[79+1];// С учетом одного места для символа '\0' int x, y, z; float a, b, c; double A, B, C; // Выполнение программы printf("\n\t Enter a symbol: "); ch = getchar(); printf("\t The symbol is: %c\n", ch); _flushall(); printf("\n\t Enter a string: "); gets_s(str, 79); printf("\t The string is: %c\n", str); a = 2.42F; b = 3.58F; c = a + b; printf("\n\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c); A = 12.1234567796602; B = 2.7182818284509; C = A + B; printf("\n\t The sum %1.13f and %1.13f \n\t is equal (as double): %1.13f\n", A, B,C); x = 2; y = 7; z = x*y; printf("\n\t Multiplication %d on %i (as an integer) is equal: %d\n", x, y, z); printf("\n\n Press any key: "); getch(); return 0; }

В объявлении символьного массива str[79+1] в методических целях сделано напоминание, что для строки следует предусмотреть символ ее завершения, т. е. '\0'. В определении переменных типа float добавлены суффиксы F.


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

Рис. 2.1. Результат программы с базовыми типами данных

Добавим считывание данных с помощью функции scanf_s(). В результате получим следующую программу.

#include <stdio.h> #include <conio.h> int main (void) { // Объявления char ch, str[79+1]; int x, y, z; float a, b, c; double A, B, C; // 1-я часть printf("\n\t Enter a symbol: "); ch = getchar(); printf("\t The symbol is: %c\n", ch); _flushall(); printf("\n\t Enter any string: "); gets_s(str, 79); printf("\t The string is: %c\n", str); a = 2.42F; b = 3.58F; c = a + b; printf("\n\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c); A = 12.1234567796602; B = 2.7182818284509; C = A + B; printf("\n\t The sum %1.13f and %1.13f \n\t is equal (as double): %1.13f\n", A, B,C); x = 2; y = 7; z = x*y; printf("\n\t The multiplication %d on %i (as an integer) is equal: %d\n", x, y, z); // 2-я часть printf("\n\t Enter a symbol: "); scanf_s("%c", &ch, 1); printf("\t The symbol is: %c\n", ch); printf("\n\t Enter any string: "); scanf_s("%c", str, 79); printf("\t The string is: %c\n", str); _flushall(); // для устранения пустой строки printf("\t Enter a real number a: "); scanf_s("%f", &a); printf("\t Enter a real number b: "); scanf_s("%f", &b); c = a + b; printf("\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c); printf("\n\t Enter a real number A: "); scanf_s("%lf", &A); printf("\t Enter a real number B: "); scanf_s("%lf", &B); C = A + B; printf("\t The sum %1.13f and %1.13f \n\t is equal (as double): %1.13f\n", A, B,C); printf("\n\t Enter an integer x: "); scanf_s("%d", &x); printf("\t Enter an integer y: "); scanf_s("%i", &y); z = x * y; printf("\t Multiplication %d on %i (as an integer) is equal: %d\n", x, y, z); printf("\n\n Press any key: "); getch(); return 0; }

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


Рис. 2.2. Результат программы с различным вводом данных

В начале функции int main(void) сделано объявление переменных, которые будут использоваться в программе. Каждый тип переменных объявлен через запятую. В частности, char str[80] означает массив символов, в квадратных скобках указано их число. Функции printf() выводят либо только сообщения, либо еще заданные переменные соответствующих типов.

Функция _flushall() используется для того, чтобы устранить пробельную строку, образовавшуюся после действия либо функции getchar(), либо функции scanf_s(). В некоторых компиляторах функция _flushall() используется без префиксного нижнего подчеркивания.

Функция gets_s() позволяет считывать символы с наличием разделителей, в частности с пробелами.

Следует обратить внимание на формат записи функций scanf_s(). Если сканируются числа или одиночные символы, то их присваивание переменным, которые были объвлены через соответствующие типы данных, осуществляется с помощью взятия адреса этих переменных, т. е. с помощью символа &;, например scanf_s("%c",&ch, 1). При сканировании массива символов, т. е. при сканировании строки, символ &; не используется. Обращение к адресу осуществляется с помощью указателей (будут рассмотрены позднее). Имя массива само по себе является указателем. Для сканирования чисел типа double в функции scanf_s() используется спецификатор l.


 

Задание 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Х по основанию 2Х, где Х – номер компьютера (1, 2, ¼), на котором выполняется лабораторная работа. Выполните тестовый пример для проверки вычислений, т. е. для заданного основания подберите число, от которого логарифм с заданным основанием даст целое число. Например, 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 // для числа пи (p) #include <math.h> #include <limits.h> #include <float.h> int main (void){ double R, 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 (p). Остальные константы можно найти в справочной документации компилятора системы MS Visual Studio 2010.

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


Результат выполнения программы представлен на рис. 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. Как выводится на консоль последовательность различных типов данных при использовании одной функции printf()?

8. Как осуществляются автоматическое и принудительное приведение типов в языке С?

9. Какие машинно зависимые типы данных имеются в языке С?

10. К каким типам данных относятся следующие литеры:

5, 5.0, 5.0F, "5", '5', 5u, 5L, 5.0L?







Дата добавления: 2015-09-06; просмотров: 1033. Нарушение авторских прав; Мы поможем в написании вашей работы!



Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

Расчетные и графические задания Равновесный объем - это объем, определяемый равенством спроса и предложения...

Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Принципы и методы управления в таможенных органах Под принципами управления понимаются идеи, правила, основные положения и нормы поведения, которыми руководствуются общие, частные и организационно-технологические принципы...

ПРОФЕССИОНАЛЬНОЕ САМОВОСПИТАНИЕ И САМООБРАЗОВАНИЕ ПЕДАГОГА Воспитывать сегодня подрастающее поколение на со­временном уровне требований общества нельзя без по­стоянного обновления и обогащения своего профессио­нального педагогического потенциала...

Эффективность управления. Общие понятия о сущности и критериях эффективности. Эффективность управления – это экономическая категория, отражающая вклад управленческой деятельности в конечный результат работы организации...

Закон Гука при растяжении и сжатии   Напряжения и деформации при растяжении и сжатии связаны между собой зависимостью, которая называется законом Гука, по имени установившего этот закон английского физика Роберта Гука в 1678 году...

Характерные черты официально-делового стиля Наиболее характерными чертами официально-делового стиля являются: • лаконичность...

Этапы и алгоритм решения педагогической задачи Технология решения педагогической задачи, так же как и любая другая педагогическая технология должна соответствовать критериям концептуальности, системности, эффективности и воспроизводимости...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия