Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABORATORNAYa_RABOTA__1.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
187 Кб
Скачать
☆

Тема 2. Организация стандартного ввода и вывода в языке Си

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

Описание параметров

template string – это строка-шаблон, описывающая представление выводимых на монитор данных с указанием формата, в котором должны быть представлены значения выражений из параметра list. Формат определяется в том месте шаблона, где должно быть выведено значение. Шаблон может содержать: поясняющий текст, esc символы (управляющие выводом), форматы.

list –определяет список выражений, значения которых должны быть представлены на мониторе в результате вывода в соответствующем формате. Форматы представлены в таблице 2. Под выражением понимается: константа, переменная, вызов функции, сложное выражение.

Таблица 1. Управляющие символы

esc символы

\n Перевод строки

\t Горизонтальное табулирование

\v Вертикальное табулирование

\r Возврат каретки

\\ Обратная косая черта

\’ Апостроф

\” Кавычка

\! !

Таблица 2. Форматы ввода и вывода функций printf и scanf

%с

вывод аргумента list в символьном формате

%d

вывод аргумента list в формате целого числа

%e, %E

вывод аргумента list в формате с плавающей точкой с шестью знаками после запятой [+/-]m.nnnnnn[+/-]pp

%f

вывод аргумента list в формате дробного числа в форме с фиксированной точкой и шестью знаками после запятой [+/-]mmm.nnnnnn

%g, %G

вывод аргумента list в формате e или f, но незначащие нули не печатаюся

%o

вывод аргумента list с преобразованием в восьмеричный формат без лидирующего нуля

%p

вывод указателя в шестнадцатеричном формате

%s

вывод строкового значения аргумента listволы выводятся до символа \0 (конец строки)

%u

вывод аргумента list с преобразованием в беззнаковый десятичный формат

%x, %X

вывод аргумента list с преобразованием в беззнаковый шестнадцатеричный формат

Задание 1. Включение в программу директив препроцессора

Подготовить проект, который должен обеспечить: стандартный ввод и вывод данных функциями из библиотеки stdio.h; вывод русского текста функцией printf; включение в программу макроопределения для значения числа π; включение в программу макроопределения для возведения числа в квадрат.

  1. Создать проект с именем L0_Z и сохранить его в вашей папке.

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

#include ˝stdio.h˝

  1. Включить в программу макроопределение - именованную константу с именем PI для значения числа π.

#define PI 3.14

  1. Включить в программу макроопределение SQR(x) для возведения в квадрат целого числа х.

#define SQR(x) x*x

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

#include ˝locale.h˝

  1. Включить в программу модуль stdlib.h – стандартная библиотека – набор функций, позволяющих автоматизировать основные операции, которые часто используются в программах языка Си.

  2. Сохраните проект. Щелкните по кнопке СохранитьВсе(SaveAll) линейки редактирования.

Задание 2 Форматированный стандартный вывод языка Си

Включить в функцию main операторы, обеспечивающие выполнение следующих заданий:

  • Настройка вывода русского текста в кодировке CP866

setlocale(LC_ALL, ˝rus˝);

  • Вывод размера ячейки памяти, выделенной для каждого целого типа (int, char, unsigned char, long) и каждого из вещественных типов (double, float, long double) по образцу

printf(”Размер памяти для типа имя типа=%d \n”, sizeof (имя типа);.

  • Определить две переменные вещественного типа одна float, а другая double и целого (int, long, unsigned char, unsigned int), инициализируя их значениями.

Например, так:

float x=5.12;

double y=10.34;

int a=2, b=3;

char ch;

  • Вывод значений переменных в формате хранения, используя форматированный вывод (функция printf) - Вывод значений согласно типу переменных:

printf(˝Значение переменной x=%f, \n, Значение переменной y=%lf, \n\n, Значение переменной a=%d \t Значение символьной переменной ch=%с, \n\t код символа в переменной ch=%d˝, x,y,a, ch, ch);

  • Вывод значений переменных в заданном формате, с учетом ширины поля, (функция printf) - вывода целого значения в 10 текущих позиций, вещественного значения в 10 текущих позиций с тремя знаками после запятой

printf("вещественное значение в формате храненияy=%f\n, вещественное знчение в заданном формате у=%10.3f", y,y);

printf(" \n целое значение в формате хранения y=%d\n, целое знчение в заданном формате у=%10d", a,a);

Результат

  • Вывод значений выражений функцией printf

Вывод значения константы pi

printf("PI=%f", PI);

  • Вывод значения выражения SQR(2)*PI

printf("Значение выражения=%f", sqr(2)*PI);

Задание 3. Сохранение и выполнение программы

Сохранить проект, выполнить компиляцию; организовать временную остановку программы на этапе выполнения для фиксации результатов программы на экране;

  • Организовать временную остановку программы

Добавьте в функцию main оператор system(“PAUSE”); перед оператором return 0;.

  • Сохранить текст программы, используя один из вариантов:

  1. Через меню системы: Filesave all;

  2. Через ленту команд системы: щелкните по кнопке save all.

  • Выполнить компиляцию программы для этого выполните команду системы: BuildCompile. Устраните ошибки компиляции.

  • Запустить программу на выполнение одним из способов:

  1. Нажать кнопку F5;

  2. Или выполнить команду DebugeBegin.

  • Вводить данные в соответствии с запросами программы.

Задание 4. Организация форматированного ввода данных

Ввод значений в определенные в программе переменные, используя форматированный ввод (функция scanf).

- оператор по вводу данных в одну переменную целого типа;

- оператор по вводу данных в три переменные целого типа;

- ввод нескольких значений различных типов;

- ввод текста из нескольких слов, разделяемых пробелами.

Добавьте в программу операторы и комментарии следующих примеров//Ввод одного значения целого типа

printf(˝Введите целое число в переменную а˝);

scanf(˝%d˝, &a);

  • Сохраните проект и выполните

// Ввод нескольких значений целого типа

printf(˝Введите два целых числа˝); //при вводе числа разделяйте пробелом

scanf(˝%d %d˝, &a, &b);

  • Сохраните проект и выполните

// Ввод нескольких значений различных типов

printf(˝Введите одно целое число \n одно дробное число\n один символ˝); //через пробел

scanf(˝%d %lf %c˝, &a, &y, &ch);

  • Сохраните и выполните проект.

// Ввод текста, состоящего из нескольких слов, которые отделяются пробелами друг от друга, функцией scanf.

  • Определить переменную для хранения текста из 100 символов:

char s[100];

  • Добавьте операторы для организации ввода текста

printf(˝Введите текст из нескольких слов˝);

scanf(˝%s˝, &s);

  • Выведите значение переменной s, используя функцию printf.

  • Что вы узнали о вводе текста функцией scanf.

  • Сохраните и выполните проект.

Задание 5. Исследование возможностей неформатированного ввода и вывода языка Си

Включите в программу операторы:

  • ввода символа функцией getchar;

формат функции

int getchar(void); - чтение символа из потока stdin.

Читает символ и возвращает его в качестве результата.

- вывод символа функцией putchar;

формат функции

int putchar(int c); запись символа в поток stdout (версия макро). Возвращает записанный символ c.В случае ошибки вернет EOF

  • ввод текста функцией gets;

формат функции

char *gets(char *s); чтение всего текста из потока stdin, включая символ перевод строки, заменяет символ перевод строки нулевым байтом (\0). Все символы, включая, пишутся в строку s и возвращается указатель на нее.

  • вывода текста функцией puts.

формат функции

int puts(const char *s); запись строки s в поток stdout.  Добавляет символ перевода строки. В случае успеха вернет неотрицательное число, на ошибку вернет EOF.

Добавьте в программу операторы, обеспечивающие выполнение следующих задач:

  • Ввод символа в переменную целого типа функцией getchar

int ch_it;

ch_it =getchar(ch_int);

  • Вывод символьной константы. Символьная константа – это один символ в апострофах.

putchar('*');

  • Вывод значения переменной ch_it функцией putchar

putchar(ch_int);

  • Вывод строковой константы. Строковая константа – это текст, заключенный в кавычки.

puts(˝Строковая константа˝);

  • Ввод текст в переменную s, используя функцию gets.

gets(s);

  • Вывод значения переменной, используя функцию puts.

puts(s);

  • Вывод значения переменной, используя функцию puts.

puts(s);

  • Вывод значения переменной s функцией printf.

  • Сохраните и выполните проект.

  • Выполните анализ двух последних выводов. Запомните результат.

  • Сохраните и закройте проект.

Тема 3. Организация стандартного ввода и вывода языка С++

Обеспечивают стандартные потоки ввода и вывода. Потоковый ввод (извлечение из потока) осуществляет объект cin класса istream,а потоковый вывод (помещение в поток)- объект cout класса ostream. Для использования объектов потока необходимо включить в программу заголовочный файл iostream и оператор стандартного пространства имен std: using namespace std.

Заголовочный файл iostream.h содержит описание стандартных потоков ввода вывода – объектов ввода istriam и вывода ostriam.

Поток стандартного ввода определяется объектом cin и связывается с клавиатурой, поток стандартного вывода определяется объектом cout и связывается с монитором.

Формат оператора ввода

cin>>имя переменной [{>>имя переменной}];

Из потока cin (буфер клавиатуры) операция >> извлекает значение и помещает в переменную, предварительно преобразовав значение в формат переменной. В одном операторе может быть указано несколько переменных, возможно различного типа

Формат оператора вывода

cout<<выражение<<{[endl или \n]/[<<выражение]}.

Под выражением в С и С++ понимается: константа, переменная, вызов функции, сложное выражение.

endl – простой мунипулятор (переход на новую строку)возвращает символу \n.

В поток cout (буфер вывода) операция << помещает значение выражения, автоматически или с помощью манипулятора, преобразовав его в символьный формат.

Методы потокового вывода cout

Имя метода

результат

width()

Возвращает значение ширины поля вывода, действующего для cout

cout.width();

width(int )

Устанавливает ширину поля вывода в соответствии со значением параметра

сout.width(10); - ширина поля вывода равна 10.

precision()

Возвращает значение точности представления дробной части вещественного числа при его выводе

cout.precesion();

precision(int)

Устанавливает значение точности представления вещественного числа при выводе.

сout. precision(3); - точность 3 цифры после запятой.

Манипуляторы

Функции, которые включаются в цепочку операций помещения в поток и извлечения из потока для форматирования данных. Для использования манипуляторов подключается заголовочный файл iomanip.h.

Простые манипуляторы – функции без параметров

Имя

Действие

dec

Установка десятичной системы счисления при вводе и выводе

oct

Установка восьмеричной системы счисления при вводе и выводе

hex

Установка шестнадцатеричной системы счисления при вводе и выводе

endl

Помещение в поток вывода символ \n

ends

Помещение в поток вывода символа конца строки \0

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

Вывод чсла 15 в десятичной, восьмеричной, шестнадцатеричной системах счисления

cout<<15<<' '<<hex<<15<<' '<<oct<<15<<endl;

Результат

Параметризованные манипуляторы – функции с параметрами

Имя

Действие

setw(int)

Устанавливает максимальную ширину поля

setprecision(int)

Устанавливает максимальное количество цифр в дробной части для вещественных чисел в форме c фиксированной точкой или общее количество цифр в форме с плавающей точкой

Задание 1. Вывод текста на одну текущую строку

Вывести (поместить) в поток фразу Организация потокового ввода и вывода и символ перехода на новую сроку.

  • Создайте новый проект именем L1_Z1.

  • Добавьте в него заголовочные файлы: iostream, locale, stdlib.

  • Добавьте в проект оператор стандартного пространства имен.

  • Включите в функцию main оператор вывода фразы Организация потокового ввода и вывода символа перехода к следующей строке.

Пример вывода текста в одну строку

#include “stdafx.h”

#include “iostream”

#include “locale.h”

#include “stdlib.h”

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

Setlocale(LC_ALL, “rus”);

cout<<˝Текст˝<<endl;

// или

cout<<˝Текст \n˝;

system(“PAUSE”);

return 0;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Задание 2. Организация ввода в одну переменную

Определите операторы организации ввода с клавиатуры одного значения в переменную целого типа.

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

Int _tmain(int argc, _TCHAR* argv[])

{

Setlocale(LC_ALL, “rus”);

int x;

cout<<˝Введите целое число˝<<;

cin>>x;

system(“PAUSE”);

return 0;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Задание 3. Организация ввода в несколько переменных

  1. Определите операторы организации ввода с клавиатуры трех целых чисел в переменные целого типа одним оператором.

  2. Определите операторы организации ввода с клавиатуры трех вещественных чисел в переменные вещественного типа.

  3. Определите операторы организации ввода с клавиатуры трех чисел в переменные целого и вещественного типа.

  • Добавьте в программу операторы, реализующие ввод по требованиям 1) 2) 3) задания

int _tmain(int argc, _TCHAR* argv[])

{

Setlocale(LC_ALL, “rus”);

int x, y, z;

cout<<˝Введите три целых числа˝<<;

cin>>x>>y>>z;

double a, b, c;

cout<<˝Введите три вещественных числа˝<<;

cin>>a>>b>>c;

cout<<˝Введите целое число в переменную целого типа \n, вещественное число в переменную вещественного типа \n, целое число в переменную вещественного типа˝<<endl;

cin>>x>>b>>c;

system(“PAUSE”);

return 0;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Задание 4. Организация вывода значений выражений

Включить в проект операторы вывода:

  1. Значения одной переменной с комментарием выводимого значения.

  2. Значения трех переменных через пробел.

  3. Значение выражения: x+y*c

int _tmain(int argc, _TCHAR* argv[])

{ ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙

cout<<˝Значение переменной х=˝<<x<<endl;

cout<<˝x=˝<<x<<˝ y=˝<<y<<˝ z=˝<<z<<endl;

cout<<˝Значение выражения =˝<< x+y*c<<endl;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Задание 5. Организация вывода целого числа в десятичной, восьмеричной и шестнадцатеричной системах счисления

Вывести число 27 в десятичной, восьмеричной и шестнадцатеричной системах счисления

  • Подключите к программе заголовочный файл iomanip.h

  • Включите в функцию main оператор помещения в поток вывода числа 27 в десятичной, восьмеричной и шестнадцатеричной системах счисления

int _tmain(int argc, _TCHAR* argv[])

{ ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙

cout<<˝В деcятичной с.с.”<<27<<endl;

cout<<˝В восьмеричной с.с.˝<<oct(27)<<endl;

cout<<˝В шестнадцатеричной с.с.˝<<hex(27)<<endl;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Задание 6. Использование методов объекта cout для организации форматированного вывода

  1. Вывести три целых числа, установив ширину поля вывода 10, прижимая число к правому краю.

  2. Вывести вещественное число в поле шириной 10 и с точностью 4 знака после точки.

int _tmain(int argc, _TCHAR* argv[])

{ ∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙

cout.width(10);

cout<<˝x=˝<<x<<˝ y=˝<<y<<˝ z=˝<<z<<endl;

cout.width(10);

cout.precision(4);

cout<<˝a=˝<<a<<˝ b=˝<<b<<˝ c=˝<<c<<endl;

}

    • Сохраните программу.

    • Выполните компиляцию.

    • Выполните программу, если компиляция прошла успешно.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]