close

Вход

Забыли?

вход по аккаунту

?

Лабораторная работа N 1

код для вставкиСкачать
Лабораторная работа №1
"Стандартные типы данных.
Функции стандартного ввода/вывода printf/scanf."
Базовые типы данных языка С
Название типаПоясненияДиапазон значенийshortКраткое целое число-128 . . . 127unsigned shortКраткое целое число без знака0 . . . 255intЦелое число-32768 . . . 32767unsigned intЦелое число 0 . . . 65535longДлинное целое число-230 . . . 230-1unsigned longДлинное целое число без знака0 . . . 231-1charОдин символсимволы кода ASCIIchar[ ]СтрокаfloatЧисло с плавающей точкой3.4 10-38 . . . 3.4 10+38doubleЧисло с плавающей точкой двойной точности1.7 10-308 . . . 1.7 10+308
Некоторые функции стандартного ввода-вывода
Функции стандартного ввода - вывода описаны в файле stdio.h.
printf() - форматный вывод на экран:
int printf(char *format, <список вывода>);
Первый параметр является символьной строкой, которая задает спецификации формата. Остальные параметры - перечисление переменных и выражений, значения которых выводятся. Каждая спецификация формата имеет вид (параметры в квадратных скобках необязательны): %[flags][width][.prec][F|N|h|l]type
где
type -тип спецификацииd или iцелое десятичное число со знакомuдесятичное число без знакаxцелое 16-ричное число без знакаfчисло с плавающей точкойeчисло в E-формеgчисло с плавающей точкой или в E-формеcодин символsстрока%символ %flags -признак выравнивания:+ или пустовыравнивание по правому краю-выравнивание по левому краюwidth -целое число - общая ширина поля. Если это число начинается с цифры 0, вывод дополняется слева нулями до заданной ширины. В заданную ширину входят все символы вывода, включая знак, дробную часть и т.п.prec -целое число, количество знаков после точки при выводе чисел с плавающей точкойF -соответственный элемент списка вывода является дальним указателемN -соответственный элемент списка вывода является близким указателемl -соответствующий элемент списка вывода является long int или double
Управляющие знаки
Управляющий знакНаименование\nПереход на новую строку\tГоризонтальная табуляция\vВертикальная табуляция\bПеревод курсора влево на одну позицию\rПеревод курсора в начало строки\fНовая страница\aКратковременная подача звукового сигнала\'Вывод на экран одиночных кавычек\"Вывод на экран двойных кавычек\\Вывод на экран черты влево (обратный слэш)
scanf() - форматный ввод с клавиатуры: int scanf(char *format, <список ввода>);
Первый параметр является символьной строкой, которая задает спецификации формата (см. функцию printf()). Остальные параметры - перечисление адресов переменных, в которые вводятся данные. В этом списке перед именами всех переменных, кроме тех, которые вводятся по спецификации типа %s, должен стоять символ &. При вводе строки с помощью функции scanf() (спецификатор формата %s), строка вводиться до первого пробела!! т.е. если вы вводите строку "Привет мир!" с использованием функции scanf()
char str[80]; // массив на 80 символов
scanf("%s",str);
то после ввода результирующая строка, которая будет храниться в массиве str будет состоять из одного слова "Привет". ФУНКЦИЯ ВВОДИТ СТРОКУ ДО ПЕРВОГО ПРОБЕЛА! Если вы хотите вводить строки с пробелами, то используйте функцию
char *gets( char *buf );
Ещё одно важное замечание! Для ввода данных с помощью функции scanf(), ей в качестве параметров нужно передавать адреса переменных, а не сами переменные. Чтобы получить адрес переменной, нужно поставить перед именем переменной знак &(амперсанд). Знак & означает взятие адреса. Что значит адрес? Попробую объяснить. В программе у нас есть переменная. Переменная хранит своё значение в памяти компьютера. Так вот адрес, который мы получаем с помощью & это адрес в памяти компьютера где храниться значение переменной.
putchar() - вывод одного символа на экран: int putchar(int ch);
Параметр функции - код символа, который выводится. При успешном выполнении функция возвращает этот же код, при неуспешном - EOF.
getchar() - ввод одного символа с клавиатуры: int getchar(void);
Функция возвращает код введенного символа. puts() - вывод строки символов на экран: int puts(char *string);
Параметр функции - указатель на начало той строки, из которой выводятся данные. Функция возвращает количество выведенных символов. gets() - ввод строки символов с клавиатуры: char *gets(char *string);
Параметр функции - указатель на начало той строки, в которую вводятся данные. Функция возвращает тот же самый указатель.
Пример ввода/вывода числа.
#include <stdio.h> /*Подключение стандартной библиотеки ввода/вывода */
void main(void) /* главная функция*/
{
int a; /* Объявление переменной a*/
printf("Введите число а \n"); /*Вывод на экран*/
scanf("%d",&a); /*Ввод целой переменной с клавиатуры*/
/*Обратите внимание! &a - передается адрес переменной, в которую записываем число*/
printf("Число а равно %d",a); /*Вывод полученного значения переменной а*/
/*Обратите внимание! a - передается просто переменная, в которой хранится число*/
}
Комментарий представляет собой любую последовательность символов, помещенную после пары символов /*. Признаком конца комментария служит первая пара символов */, встретившаяся после исходной пары /*. Комментарии используются исключительно самим программистом. Перед лексическим анализом они исключаются из исходного текста программы транслятором.
Пример ввода/вывода строки.
#include <stdio.h>
void main(void)
{
char buffer[100]; /* массив (буфер) для вводимой строки */
gets(buffer); /* вводим строку и нажимаем enter */
printf("%s",buffer); /* вывод введённой строки на экран */
}
Задания.
Вариант 1.
1. Вывести приглашение для ввода двух целых чисел. Получить два целых числа. Вывести эти числа и их сумму.
2. Вывести приглашение для ввода двух вещественных чисел. Получить два вещественных числа. Вывести эти числа и их произведение, с точностью 3 знака после запятой.
3. Вывести приглашение для ввода символа и строки. Получить символ и строку. Вывести эту строку и символ.
4. Вывести приглашение для ввода двух вещественных чисел. Получить два вещественных числа. Вывести таблицу первая колонка эти числа, вторая результат деления этих чисел на 2. Первая колонка шириной 10 символов, выравнивание по правой стороне, точность 4 знака после запятой. Вторая колонка шириной 8 символов, выравнивание по левой стороне, точность 3 знака после запятой.
5. Разработать программу, которая вводит фактические данные из таблицы, Проекты поиска внеземных сигналовГодНаучный руководительДиаметр антенны (м)Рабочая частота (МГц)1960Дрейк2614201970Троицкий1418751978Хоровиц3001665Примечание: наблюдались объекты от 2 звезд до нескольких галактик
и выводит ее на экран.
Вариант 2.
1. Вывести приглашение для ввода двух целых чисел. Получить два целых числа. Вывести эти числа и их произведение.
2. Вывести приглашение для ввода двух вещественных чисел. Получить два вещественных числа. Вывести эти числа и их произведение, с точностью 4 знака после запятой.
3. Вывести приглашение для ввода символа и строки. Получить символ и строку. Вывести эту строку и символ.
4. Вывести приглашение для ввода двух вещественных чисел. Получить два вещественных числа. Вывести таблицу 4х4 первая строка эти числа, вторая результат умножения этих чисел на 2. Первая колонка шириной 8 символов, выравнивание по левой стороне, точность 2 знака после запятой. Вторая колонка шириной 10 символов, выравнивание по правой стороне, точность 4 знака после запятой.
5. Разработать программу, которая вводит фактические данные из таблицы, Приблизительное количество звезд разных спектральных классов в ГалактикеСпектральный классПриблизительная масса (отн.Солнца)Часть %Численность O320.0000255000F1.252.912000000000M0.273.2293000000000Примечание: не показаны данные для классов: B, A, G, K
и выводит ее на экран.
Пример текста программы приведен ниже. /*******************************************************/
/* Лабораторная работа */
/* Типы данных и ввод-вывод */
/* Пример выполнения. Вариант ╧30. */
/*******************************************************/
#include <stdio.h>
int main(void) {
char name1[9], name2[9], name3[9];
char sc1, sc2, sc3;
unsigned short cnt1, cnt2, cnt3;
float sq1, sq2, sq3;
/* Введение фактических данных*/
printf("1. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name1, &sc1, &cnt1, &sq1);
printf("2. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name2, &sc2, &cnt2, &sq2);
printf("3. Введите: название, школу, количество, площадь >");
scanf("%s %c %d %f",name3, &sc3, &cnt3, &sq3);
/* Вывод таблицы */
/* вывод заголовков */
printf("-----------------------------------------------\n");
printf("|Буддийские монастыри Японии периода Нара |\n");
printf("|---------------------------------------------|\n");
printf("| Название | Школа | Количество|Площадь земли|\n");
printf("| | | монахов| (га) |\n");
printf("|----------|-------|-----------|-------------|\n");
/* вывод строк фактических данных */
printf("| %9s | %c | %3d | %-5.1f |\n", name1, sc1, cnt1, sq1);
printf("| %9s | %c | %3d | %-5.1f |\n", name2, sc2, cnt2, sq2);
printf("| %9s | %c | %3d | %-5.1f |\n", name3, sc3, cnt3, sq3);
/* вывод примечаний */
printf("|---------------------------------------------|\n");
printf("| Примечание: Т - Тэндай; С - Сингон; |\n");
printf("| Д - Дзедзицу |\n");
printf("-----------------------------------------------\n");
return 0;
}
Документ
Категория
Рефераты
Просмотров
59
Размер файла
94 Кб
Теги
работа, лабораторная
1/--страниц
Пожаловаться на содержимое документа