Національний університет “ Львівська політехніка”
Кафедра АСУ
Звіт
з лабораторної роботи №3
з курсу “Проблеми орієнтованих мов програмування”
Вирази та операції мови С. Перетворення типів. Виведення даних за допомогою функції printf ().
Лабораторна робота №3
Тема роботи: Вирази та операції мови С. Перетворення типів. Виведення даних за допомогою функції printf ().
Мета роботи: Навчитись: складати і записувати різноманітні вирази, використовуючи набір операцій мови С; визначити значення виразів різних типів для заданих значень операндів з урахуванням внутрішніх форм збереження даних; виводити на екран комп’ютера у потрібній формі значення даних і виразів засобами стандартної бібліотечної функції форматного виведення printf().
Виконання лабораторної роботи
В – 6
Написати програму, в якій реалізувати різні можливості форми виведення значень змінних, вказаних у завдані, використовуючи відповідні специфікації формату функції printf(). Програма повинна складатися із послідовності операторів виклику printf() з різними допустимими специфікаціями. До значень цілочислових типів треба застосувати специфікації формату d, I, u, x, X, o з необхідними модифікаторами та допустимими прапорцями, до значень дійсних чисел застосувати специфікації f, e, E, g, задаючи необхідну точність зображення чисел. Проаналізувати та пояснити отримані на екрані результати виведення та зафіксувати їх у звіті.
float p=77,9387 e-2; long d=67050;
Текст програми
#include <stdlib.h>
#include <stdio.h>
void main()
{
printf("V6 \n ZAVDANNIA 1\n");
float p = 77.9387e-2;
long d = 67050;
printf("%%10.11d -> g=%10.11d\n",d);
printf("%%11.10i -> g=%11.10i\n",d);
printf("%%5.5u -> g=%5.5u\n",d);
printf("%%#020x -> g=%#020x\n",d);
printf("%%#020.15X -> g=%#020.15X\n",d);
printf("%%-#15o -> g=%-#15o\n\n",d);
printf("%%-10.4f -> g=%-10.4f\n",p);
printf("%%010.2e -> g=%010.2e\n",p);
printf("%%1.5E -> g=%1.5E\n",p);
printf("%%10.4g -> g=%10.4g\n",p);
getchar();
Результат програми:
/
Функція printf() призначена для виведення інформації за заданим форматом. В даному завдані лабораторної роботи були застосовані різні специфікатори перетворення для форматів для їх детальнішого вивчення та аналізу. Результати згідно поданих специфікаторів наведені в таблиці. Перед специфікатором завжди ставиться знак %.
Спочатку уважно переглянути записану в завдані функцію printf() та проаналізувати її параметри: рядок формату та дані, що виводяться. Розрахувати значення виразів для заданих значень змінних і вказати, в якій формі, з якою точністю, в яких позиціях тощо вони відображатимуться на екрані. Потім програмно реалізувати задану функцію printf() і порівняти отримані результати з прогнозованими. Виявити й проаналізувати відмінності та зробити відповідні висновки.
В поданому завдані згідно варіанту задано плаваючий тип (double) z = 118.75 та цілочисельним типом char k=67. та функцію виведення з відповідними аргументами printf(" \tk=%d=%c, ~ k>>3= %#0, z=%10.3e, sz= %u \n",
k ,k, ~ k>>3, z, sizeof z ); Розберемо функцію printf() по частинам :
%d - десяткове ціле число;
%c - один символ;
\t – горизонтальний керуючий символ;
~ - Порозрядове інвертування внутрішнього двійкового коду (побітове заперечення);
>> - Зсув вправо бітового представлення значення правого цілочисельного операнда на кількість розрядів, рівну значенню правого операнда;
% - Одержання залишку від ділення целочисельних операндів (13%4 = 1);
\n – перехід на новий рядок;
sizeof z – отримується число байт, що відводиться під операнд .
Текст програми
#include <stdlib.h>
#include <stdio.h>
void main()
{printf("\n ZAVDANNIA 2\n");
int z = 118.75;
char k = 67;
printf("\tk=%d=%c, -k>>3=%#o, z=%10.3e, sz=%u \n", k, k, -k>>3, z, sizeof z);
getchar();}
Результат програми:
/
Задано певний символ. Написати вираз, який перевіряє, чи цей символ є цифрою.
Текст програми
#include <stdlib.h>
#include <stdio.h>
void main()
{
printf("\n ZAVDANNIA 3\n");
char sym;
printf("Symvol - ");
scanf("%c",&sym);
printf("Cey symvol%s e cyfroju\n", ((sym >= '0') &&(sym <= '9'))?"":" ne");
system("pause");
}
Результат програми:
/
/
Висновок: На даній лабораторній роботі були розглянуті різноманітні вирази, з урахуванням різних форм збереження та виведення. Виведення даних і виразів засобами стандартних бібліотек функцій. Були розглянуті функції форматного введення та виведення printf() та scanf(). Основну увагу було приділено специфікаціям перетворення для функції printf() та модифікаторів рядка формату.