Опубликован: 14.12.2010 | Доступ: свободный | Студентов: 3135 / 737 | Оценка: 4.53 / 4.12 | Длительность: 26:28:00
Лекция 3:

Переменные и базовые типы данных языка С

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >

Практическая часть

Для приводимых примеров будем приводить только текст программы и результат ее выполнения. Программы должны быть написаны в Visual Studio (см. тему 1).

Пример 1. Напишите программу ввода символа, строки, действительных и целых чисел. Действительные числа сложите, целые числа перемножьте. Для действительных чисел использовать типы float и double.

Программный код решения примера:

#include <stdio.h>
#include <conio.h>

int main (void) {
	// Объявления
char ch, str[79+1];// С учетом одного места для символа '\0'  
	int x, y, z;
	float a, b, c;
	double A, B, C;

// Выполнение программы
printf("\n\t Enter a symbol: ");
ch = getchar();
printf("\t The symbol is: %c\n", ch);
_flushall();
printf("\n\t Enter a string: ");
gets_s(str, 79);
printf("\t The string is: %s\n", str);
a = 2.42F; b = 3.58F;
c = a + b;
printf("\n\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c);
A = 12.1234567796602;
B =  2.7182818284509;
C = A + B;
printf("\n\t The sum %1.13f and %1.13f \n\t is equal (as double): %1.13f\n", A, B,C);
x = 2; y = 7;
z = x*y;
printf("\n\t Multiplication %d on %i (as an integer) is equal: %d\n", x, y, z);

	printf("\n\n Press any key: ");
	_getch();
	return 0;
}

В объявлении символьного массива str[79+1] в методических целях сделано напоминание, что для строки следует предусмотреть символ ее завершения, т. е. '\0'. В определении переменных типа float добавлены суффиксы F.

Результат программы с базовыми типами данных

Рис. 2.1. Результат программы с базовыми типами данных

Результат выполнения программы показан на рис. 2.1.

Добавим считывание данных с помощью функции scanf_s(). В результате получим следующую программу:

#include <stdio.h>
#include <conio.h>

int main (void)
 {
	// Объявления
	char ch, str[79+1];
	int x, y, z;
	float a, b, c;
	double A, B, C;

// 1-я часть	
printf("\n\t Enter a symbol: ");
ch = getchar();
printf("\t The symbol is: %c\n", ch);
_flushall();

printf("\n\t Enter any string: ");
gets_s(str, 79);
printf("\t The string is: %s\n", str);

a = 2.42F;
b = 3.58F;
c = a + b;
printf("\n\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c);
A = 12.1234567796602;
B =  2.7182818284509;
C = A + B;

printf("\n\t The sum %1.13f and %1.13f \n\t is equal (as double): %1.13f\n", A, B,C);
x = 2;
y = 7;
z = x*y;
printf("\n\t The multiplication %d on %i (as an integer) is equal: %d\n", x, y, z);

// 2-я часть
printf("\n\t Enter a symbol: ");
scanf_s("%c", &ch, 1);
printf("\t The symbol is: %c\n", ch);

printf("\n\t Enter any string: ");
scanf_s("%s", str, 79);
printf("\t The string is: %s\n", str);
_flushall(); // для устранения пустой строки

printf("\t Enter a real number a: ");
scanf_s("%f", &a);

printf("\t Enter a real number b: ");
scanf_s("%f", &b);

c = a + b;
printf("\t The sum %1.2f and %1.2f (as float) is equal: %1.4f\n", a, b, c);

printf("\n\t Enter a real number A: ");
scanf_s("%lf", &A);

printf("\t Enter a real number B: ");
scanf_s("%lf", &B);
C = A + B;

Результат выполнения видоизмененной программы показан на рис. 2.2.

Результат программы с различным вводом данных

Рис. 2.2. Результат программы с различным вводом данных

В начале функции int main(void) сделано объявление переменных, которые будут использоваться в программе. Каждый тип переменных объявлен через запятую. В частности, char str[81] означает массив символов, в квадратных скобках указано их число. Функции printf() выводят либо только сообщения, либо еще заданные переменные соответствующих типов.

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

Функция gets() позволяет считывать символы с наличием разделителей, в частности, с пробелами. В Microsoft Visual Studio 2010 рекомендуется использовать gets_s(), чтобы не было предупреждений.

Следует обратить внимание на формат записи функций scanf(). Если сканируются числа, или одиночные символы, то присваивание этих символов переменным, которые были объявлены через соответствующие типы данных, осуществляется с помощью взятия адреса этих переменных, т.е. с помощью символа &, например, scanf_s("%c",&ch, 1). При сканировании массива символов, т.е. при сканировании строки, символ & не используется. Имя массива само по себе является указателем. Обращение к адресу осуществляется с помощью указателей (будут рассмотрены позднее). Для сканирования чисел типа double в функции scanf_s() используется спецификатор l.

< Лекция 2 || Лекция 3: 1234 || Лекция 4 >
Мухаммадюсуф Курбонов
Мухаммадюсуф Курбонов