Линейные вычислительные процессы




(2 часа)

 

Цель работы: Изучить форматы объявлений и работу основных функций ввода/вывода информации. Научиться составлять простые программы с линейным вычислительным процессом.

 

Теоретические сведения

 

Одной из основных задач при программировании является ввод и вывод данных. В С для этого применяют ряд функций printf(), scanf(), cprintf(), ecvt(), fprintf(), fread(), fscanf(), hutc(), puts(), putw(), sprintf(), vprintf(). Функция printf() осуществляет форматированный вывод в поток stdout. Объявление функции находится в заголовочном файле < stdio.h>.

Синтаксис объявления функции

printf() #includ <stdio.h> printf (const char* format [,argument,…]);

В скобках [ ] указаны необязательные элементы спецификации.

Спецификация формата, определяющая вывод аргументов, имеет вид:

%[flags] [width] [.precision] [F/N/h/l/L] type

Функция scanf() - Осуществляет форматированный ввод из потока stdin

Синтаксис # include <stdio.h>

int scanf(const char *format[,adress,...]);

Неотображаемыми символами являются пробел (), символ табуляции (\t), символ перехода на новую строку (\n) и другие управляющие последовательности. Если функция scanf() встречает неотображаемый символ в форматной строке, она будет считывать, но не сохранять всю последовательность символов вплоть до следующего отображаемого символа во входном потоке.

Отображаемыми символами являются все другие символы кода ASCII, за исключением символа процента (%). Если функция scanf() встречает в строке формата отображаемый символ, то она прочитает, и сохранит соответствующий ему символ.

 

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

Спецификация формата функции … scanf() имеет следующий вид

% [*] [widht] [F|N] [h|l|L] <type>

Спецификация формата начинается с символа процента (%). После этого символа следуют символы спецификации. Ниже представлено общее описание строки формата scanf(), управляющей формированием потока данных.

 

Символ или спецификатор Чем управляет или что определяет
модификаторы типа аргумента
модификаторы размера указателя
Тип short int; Тип long int (если символ типа указывает на преобразование к целому типу); Тип double (если символ типа указывает на преобразование к типу c плавающей запятой); Тип long double(допустим только при преобразованиях к типу c плавающей запятой)
Указатель типа near, Указатель типа far ;
*- подавление назначения

width – ширина поля

Size

-

 

-

Отменяет присваивание следующего поля ввода Максимальное число считываемых символов Изменяет размер по умолчанию адресного аргумента

 

Символы типа

Символ Ожидается на входе Тип аргумента
d D o O i I u U x X e, E f g, G s c Десятичное целое Десятичное целое Восьмеричное целое Восьмеричное целое Десятичное целое Десятичное целое Десятичное целое без знака Десятичное целое без знака Шестнадцатеричное целое Шестнадцатеричное целое Число с плавающей запятой Число с плавающей запятой Число с плавающей запятой Строка символов Символ Указатель на int (int *arg ) Указатель на long (long *arg ) Указатель на int (int *arg) Указатель на long (long *arg ) Указатель на int (int *arg) Указатель на long (long *arg) Указатель на unsigned int (unsigned int *arg)   Указатель на unsigned long (unsigned long *arg)   Указатель на int (int *arg)   Указатель на long (long *arg)   Указатель на float (float *arg)   Указатель на float (float *arg)   Указатель на float (float *arg)   Указатель на массив символов (char arg[ ]) Указатель на символ (char *arg)

 

Пример

/* ЗАНЯТИЕ N 2

Разработал Сидоров К.В. */

 

#include <stdio.h> //Директива препроцессора (#include) включает

#include <conio.h> //Заголовочные файлы с расширением (.h)

#include <string.h>

int a; //Объявление глобальной переменной типа int

int main(void) //Главная функция

{//Начало составного оператора (блока, тела функции)

char c,buf[20]; //Объявление локальных переменных

char *pst="\"slovo\"";//Объявление локальной переменной c

float f=26.6; //инициализацией

double d;

clrscr(); //Функция очистки экрана

printf(" Ввод переменной типа char: "); //Функция вывода на экран

fflush(stdin); //Функция очистки буфера клавиатуры

scanf("%c",&c); //Функция ввода данных,

// & - операция взятия адреса

printf(" Вывод переменной типа char: ");

printf("%c\n",c);

printf("\n Ввод переменной типа int: ");

scanf("%d",&a);

printf(" \t Вывод переменной типа int\n");

printf(" Формат вывода (int): +6d #6o #8x\n");

printf("\t\t |%+6d|%#6o|%#8x|\n ",a,a,a);

printf("\n Ввод переменной типа int: ");

scanf("%d",&a);

printf("\t Вывод переменной типа int\n");

printf(" Формат вывода (int): -6d +6d #8d\n");

printf("\t\t |%-6d|%+6d|%#6d|\n",a,a,a);

printf("\n Вывод исходной cтроки: %s\n\n",pst);

printf(" Ввод cтроки в массив: ");

scanf("%s",buf);

printf(" Вывод cтроки из массива: %s\n\n",buf);

printf(" Ввод переменных типа float and double (через пробел):\n");

printf("\t\t ");

scanf("%f %lf",&f,&d);

printf("\t Вывод переменных типа float and double\n");

printf(" Формат вывода (float): 10.6f 10.6e +10.6g\n");

printf("\t\t |%10.6f|%10.6e|%+10.6g|\n",f,f,f);

printf(" Формат вывода (double): 10.8lf 10.8e 10.8g\n");

printf("\t\t |%10.8lf|%10.8e|%+10.8g|\n ",d,d,d);

getche(); //Функция ввода символа с клавиатуры

return 0; //Оператор возврата значения из функции (0)

} //Конец составного оператора (блока, тела функции)

 

/* Результат выполнения программы

 

Ввод переменной типа char: u

Вывод переменной типа char: u

Ввод переменной типа int: 78

Вывод переменной типа int

Формат вывода (int): +6d #6o #8x

| +78| 0116| 0x4e|

Ввод переменной типа int: 90

Вывод переменной типа int

Формат вывода (int): -6d +6d #8d

|90 | +90| 90|

Вывод исходной cтроки: "slovo"

Ввод cтроки в массив: символы 45!"#:$.;?%;?

Вывод cтроки из массива: символы 45!"#:$.;?%;?

Ввод переменных типа float and double (через пробел):

78.89 6778.0

Вывод переменных типа float and double

Формат вывода (float): 10.6f 10.6e +10.6g

| 78.889999|7.889000e+01| +78.89|

Формат вывода (double): 10.8lf 10.8e 10.8g

|6778.00000000|6.77800000e+03| +6778| */

Ход работы

1 Изучить теоретические сведения.

2 Выполнить загрузку интегрированной среды разработки С (IDE ) для
Borland C, расположенной в каталоге N:\APL\BC\BIN\BC.EXE, из активной директории.

3 Ознакомиться с форматом функций printf() и scanf().

4 Скопировать примеры для функций printf, scanf из встроенной помощи в активное окно и изучить их работу. Изучить синтаксические конструкции, приведенные во встроенной помощи.

5 Выполнить загрузку программ-примеров (N:\APL\TC\LAB\*.CPP), их корректировку с использованием различных возможностей функций printf (), scanf (), сохранение файлов и компиляцию.

6 Написать отчет и сделать выводы по работе.

7 Подготовиться к защите лабораторной работы, изучив вопросы по данной теме, изучив контрольные вопросы по теме.

 

 

Индивидуальное задание к лабораторной работе №2

Составить программу для форматированного ввода и вывода данных заданного типа согласно индивидуальному заданию приведенному в таблице 2.1.

Таблица 2.1 - Индивидуальное задание

вариант первый тип второй тип третий тип четвертый тип выравнивание по краю Точность вещественных типов
  unsigned int long int float double левый 14.5
  signed int long double char short int правый 12.8
  unsigned int unsigned long int short int float правый 10.3
  long int char double float левый 11.2
  unsigned long int float int long double правый 7.3
  signed long int long double unsigned int float правый 16.5
  short int long double float unsigned int левый 11.5
  unsigned long int float long int char правый 20.9
  float signed int long double char левый 13.6
  long int float double char левый 14.3
  char signed long int long double float правый 9.6
  float int long double unsigned long int левый 8.2
  char unsigned long int float long int левый 12.4
  float signed long int long double signed long int правый 15.7
  long double short int float unsigned long int правый 17.5
  long double unsigned long int int char левый 14.2
  float short int char long double правый 10.5
  unsigned long int short int long int char левый 11.7
  char double long double unsigned int левый 16.12
  float int double char левый 10.3
  long double unsigned int double float правый 9.5
  long double float long double unsigned long int левый 13.6
  float long int long double unsigned long int левый 12.4
  float long int char unsigned long int правый 13.8
  signed int long double float unsigned short long правый 10.6
  float double char long int левый 12.5
  signed long int long double float char правый 11.4
  int long double unsigned long int float левый 10.3
  unsigned long int float long int char левый 15.6
  signed char long double unsigned char short int левый 18.10

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-09-06 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту:

Обратная связь