- •«Национальный исследовательский
- •Т.Е. Мамонова Лабораторная работа № 1.
- •220700 – «Автоматизация технологических процессов и производств».
- •Лабораторная работа № 1
- •Теоретическая часть
- •Объявление постоянных
- •Объявление переменных
- •Потоки ввода-вывода
- •Функция стандартного вывода printf()
- •Примеры программ.
- •Функция стандартного ввода scanf()
- •Примеры программ
- •Варианты заданий к лабораторной работе №1.
- •Содержание отчета
- •Список литературы
- •Приложение а.
- •Приложение б. Математические функции – файл math.H
- •220700 – «Автоматизация технологических процессов и производств». Отпечатано в Издательстве тпу в полном соответствии с качеством предоставляемого оригинал-макета
- •634034, Г. Томск, пр. Ленина, 30
Примеры программ.
Пример 4.
/* Example 4 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int a,b,c; // Объявление переменных a,b,c
a=5;
b=6; c=9;
printf("a=%d, b=%d, c=%d",a,b,c);
getch();
}
Результат работы программы: a=5, b=6, c=9
Пример 5.
/* Example 5 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
float x,y,z;
x=10.5;
y=130.67;
z=54;
printf("Koordinati : x:%.2f, y:%.2f, z:%.2f", x, y, z);
getch();
}
Результат работы программы: Koordinati: x:10.50, y:130.67, z:54.00
Пример 6.
/* Example 6 */
#include <stdio.h>
#include <conio.h>
void main()
{
int x;
x=5;
printf("x=%d", x*2);
getch();
}
Результат работы программы: x=10
Пример 7.
/* Example 7 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
printf("\"Текст в кавычках\"");
printf("\nСодержание кислорода: 100%%");
getch();
}
Результат работы программы: "Текст в кавычках" Содержание кислорода: 100%
Пример 8.
/* Example 8 */
#include <stdio.h>
#include <conio.h>
void main(void)
{ int a;
a=11; // 11 в десятичной равно b в шестнадцатеричной
printf("a-dec=%d, a-hex=%X",a,a);
getch();
}
Результат работы программы: a-dec=11, a-hex=b
Пример 9.
/* Example 9 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
char ch1,ch2,ch3;
ch1='A';
ch2='B';
ch3='C';
printf("%c%c%c",ch1,ch2,ch3);
getch(); }
Результат работы программы: ABC
Пример 10.
/* Example 10 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
char *str="Main text string.";
printf("It is %s",str);
getch();
}
Результат работы программы: It is Main text string.
Пример 11.
/* Example 11 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
printf("Hello!\n"); // После печати будет переход на новую строку - \n
printf("Main name is Pavel."); // Это будет напечатано на новой строке
getch();
}
Результат работы программы: Hello!
Main name is Pavel.
Функция стандартного ввода scanf()
Функция scanf() – функция форматированного ввода. С её помощью вы можете вводить данные со стандартного устройства ввода (клавиатуры). Вводимыми данными могут быть целые числа, числа с плавающей запятой, символы, строки и указатели.
Функция scanf() имеет следующий прототип в файле stdio.h: int scanf(char *управляющая строка);
Функция возвращает число переменных которым было присвоено значение.
Управляющая строка содержит три вида символов: спецификаторы формата, пробелы и другие символы. Спецификаторы формата начинаются с символа %. Спецификаторы формата представлены в табл. 5. [2]
Таблица 5. Спецификаторы формата для функции scanf()
%c |
чтение символа |
%d |
чтение десятичного целого |
%i |
чтение десятичного целого |
%e |
чтение числа типа float (плавающая запятая) |
%h |
чтение short int |
%o |
чтение восьмеричного числа |
%s |
чтение строки |
%x |
чтение шестнадцатеричного числа |
%p |
чтение указателя |
%n |
чтение указателя в увеличенном формате |
При вводе строки с помощью функции scanf() (спецификатор формата %s), строка вводиться до первого пробела!! т.е. если вы вводите строку "Hello word!" с использованием функции scanf()
char str[80]; // массив на 80 символов
scanf("%s",str);
то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова "Hello". ФУНКЦИЯ ВВОДИТ СТРОКУ ДО ПЕРВОГО ПРОБЕЛА! Если вы хотите вводить строки с пробелами, то используйте функцию
char *gets( char *buf );
С помощью функции gets() вы сможете вводить полноценные строки. Функция gets() читает символы с клавиатуры до появления символа новой строки (\n). Сам символ новой строки появляется, когда вы нажимаете клавишу enter. Функция возвращает указатель на buf (buf – буфер (память) для вводимой строки).
Пример 12.
/* Example 12 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
char buffer[100]; // массив (буфер) для вводимой строки
gets(buffer); // вводим строку и нажимаем enter
printf("%s",buffer);// вывод введённой строки на экран
getch(); }
Ещё одно важное замечание! Для ввода данных с помощью функции scanf(), ей в качестве параметров нужно передавать адреса переменных, а не сами переменные. Чтобы получить адрес переменной, нужно поставить перед именем переменной знак &(амперсанд). Знак & означает взятие адреса.
Что значит адрес? В программе у имеется переменная. Переменная хранит своё значение в памяти компьютера. Адрес, который получается с помощью & это адрес в памяти компьютера где храниться значение переменной.
Пример 13.
/* Example 13 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
int x;
printf("Enter the value x:");
scanf("%d",&x);
printf("The Value x=%d",x);
getch();
}
Вернёмся к управляющей строке функции scanf(). Ещё раз: int scanf(char *управляющая строка);
Символ пробела в управляющей строке дает команду пропустить один или более пробелов в потоке ввода. Кроме пробела может восприниматься символ табуляции или новой строки. Ненулевой символ указывает на чтение и отбрасывание этого символа.
Разделителями между двумя вводимыми числами являются символы пробела, табуляции или новой строки. Знак * после % и перед кодом формата (спецификатором формата) дает команду прочитать данные указанного типа, но не присваивать это значение.
Например:
scanf("%d%*c%d",&i,&j);
при вводе 50+20 присвоит переменной i значение 50, переменной j - значение 20, а символ + будет прочитан и проигнорирован.
В команде формата может быть указана наибольшая ширина поля, которая подлежит считыванию.
Например:
scanf("%5s",str);
указывает необходимость прочитать из потока ввода первые 5 символов. При вводе 1234567890ABC массив str будет содержать только 12345, остальные символы будут проигнорированы. Разделители: пробел, символ табуляции и символ новой строки – при вводе символа воспринимаются, как и все другие символы.
Если в управляющей строке встречаются какие-либо другие символы, то они предназначаются для того, чтобы определить и пропустить соответствующий символ. Поток символов 10plus20 оператором
scanf("%dplus%d",&x,&y);
присвоит переменной x значение 10, переменной y – значение 20, а символы plus пропустит, так как они встретились в управляющей строке.
Одной из мощных особенностей функции scanf() является возможность задания множества поиска (scanset). Множество поиска определяет набор символов, с которыми будут сравниваться читаемые функцией scanf() символы. Функция scanf() читает символы до тех пор, пока они встречаются в множестве поиска. Как только символ, который введен, не встретился в множестве поиска, функция scanf() переходит к следующему спецификатору формата. Множество поиска определяется списком символов, заключённых в квадратные скобки. Перед открывающей скобкой ставиться знак %.
Пример 14.
/* Example 14 */
#include <stdio.h>
#include <conio.h>
void main(void)
{
char str1[10], str2[10];
scanf("%[0123456789]%s", str1, str2);
printf("\n%s\n%s",str1,str2);
getch();
}
Введём набор символов: 12345abcdefg456
На экране программа выдаст: 12345 abcdefg456
При задании множества поиска можно также использовать символ "дефис" для задания промежутков, а также максимальную ширину поля ввода.
scanf("%10[A-Z1-5]", str1);
Можно также определить символы, которые не входят в множество поиска. Перед первым из этих символов ставиться знак ^. Множество символов различает строчные и прописные буквы.
Напомню, что при использовании функции scanf(), ей в качестве параметров нужно передавать адреса переменных. Выше был написан код:
char str[80]; // массив на 80 символов
scanf("%s",str);
Обратите внимание на то, что перед str не стоит символ &. Это сделано потому, что str является массивом, а имя массива – str является указателем на первый элемент массива. Поэтому знак & не ставиться. Мы уже передаем функции scanf() адрес. Ну проще говоря str это адрес в памяти компьютера где будет храниться значение первого элемента массива.