Типы переменных. Функции ввода/вывода
Рассмотрим пример программы, содержащей различные типы переменных.
Пример 1.
#pragma hdrstop
#include<stdio.h>
#include<conio.h>
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
char slash='/';
short day=15;
short month=9;
int year=2012;
//char* name="Yulia";
/*char name[80]="Yulia";*/
char name[]="Yulia";
int myAge=19;
float myWeightInKg=57.2;
long myAgeInDays=7277;
printf("Anketa\n\n");
printf("Date=%2d%c%2d%c%d\n",day,slash,month,slash,year);
//printf("Date=%2d\/%2d\/%d\n",day,month,year);//
printf("Name=%s\n",name);
printf( "My age =%d\n", myAge);
printf( "My weight in kilograms=%.1f\n", myWeightInKg);
printf( "My age in days=%d\n", myAgeInDays);
getch();
return 0;
}
Перед тем как использовать переменные, программа должна объявить их. Первой мы объявляем переменную символьного типа char с идентификатором (именем) slash . Символьный тип char предназначен для работы с символами и строками. Переменные этого типа занимают в памяти компьютера один байт, в котором хранится номер (код) символа в стандартной для всех моделей PC таблице символов ASCII. Таким образом, в памяти компьютера все символы хранятся как числа. Инициализируем, т.е. присваиваем ей значение, нашу переменную slash символом /, при этом символ берется в апострофы. Последовательность символов образует строку. Строка в С хранится как последовательность значений типа char, которые заканчиваются нулевым символом (нулевым кодом) ‘\0’. Нулевой символ позволяет функциям, работающим со строками, обнаружить конец строки . В нашей программе переменная name – имя массива, в котором хранится строка Yulia.
Рассмотрим оператор printf на примере:
printf( "My age =%d\n", myAge);
Внутри строки находится спецификатор %d, специальная команда, которая «объясняет» функции printf(), где и в каком месте должна появиться переменная myAge. Функция printf() заменяет спецификатор, значением переменной, записанной после строки, заключенной в кавычки. Символ, стоящий после знака процента, указывает, какого типа должна быть выведена переменная. В нашем случае – это d, значит, вывести нужно целую переменную. В нашей программе функция printf() использует также спецификаторы %c, %f для отображения переменных типа char и float соответственно. После спецификатора в функции стоит управляющий символ \n, который обозначает переход на новую строку. Функция printf() дает возможность задать точность представления, с которой будут напечатаны данные. Для этого поместите между знаком процента и спецификатором преобразования десятичную точку с последующим числом: “%.1f”. Переменная myWeightInKg будет напечатана с одним десятичным знаком после точки. Функция позволяет также задать размер (ширину) поля, в которой печатаются данные. Целое число, задающее ширину поля, может быть вставлено между знаком процента и спецификатором преобразования: “%2d”.
В нашей программе мы использовали комментарии. Цель комментариев – пояснить содержание программы, компилятор их полностью игнорирует. Если мы используем блок комментариев, то заключаем его в двухсимвольные ограничители /* и */. Для однострочных комментариев мы можем использовать два символа //, такой комментарий действует от начала этих символов до конца строки. В нашей программе, например, мы закомментировали два способа объявления и инициализации переменной name.
Пример 2.
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
#include <stdio.h>
#include <conio.h>
int main()
{
float a,b,c;
printf("Adding two numbers\n\n");
printf("Enter first summand\n");
scanf("%f",&a);
printf("Enter second summand\n");
scanf("%f",&b);
c=a+b;
printf("%.2f+%.2f=%.2f \n",a,b,c);
getch();
return 0;
}
В этой программе мы использовали функцию scanf(), которая отвечает за ввод данных в программе с клавиатуры. Функция содержит один или несколько спецификаторов, заключенных в кавычки (строка формата). За строкой формата, через запятую следует адрес переменной, предназначенный для приема данных. Например:
scanf("%f",&a);
Выражение &a передает адрес переменной a функции scanf().
Пример 3.
#pragma argsused
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{
char slash = '/';
short chislo = 1;
short month = 9;
int year =2010;
long population = 10000000L;
float pi = 3.14159;
double velosity =299791336.2;
long double lightYear = 9.5e15;
printf("Date = %02d%c%02d%c%d\n",chislo,slash, month, slash, year);
printf("Population of the Belarus = %ld\n",population);
printf("Pi = %f\n",pi);
printf("Velocity of light = %13.2lf meter/sec\n",velosity);
printf("One light year = %.0Lf meter\n",lightYear);
getch();
return 0;
}
Задание.
1. Написать программу1, выводящую на экран ваши анкетные данные (аналогично примеру1). При выводе вашего веса изменять число знаков после запятой (после спецификатора не указывать количество знаков, указать 2 знака). Изменить при объявлении переменной «вес» и при ее выводе тип float на int. Результаты изменений отразить в отчете. В качестве примера может быть использован также пример 3.
2. Написать программу 2, реализующую арифметические операции для трех чисел согласно варианту (аналогично примеру 2). Значения переменных вводятся с клавиатуры.
3. Выполнить трассировку программы 1, наблюдая изменение значений переменных в ходе выполнения трассировки.
4. * Написать программу, вычисляющую площадь круга. Значение радиуса вводим с клавиатуры, r2 определять как r*r.
№ | Арифметическое выражение |
1. | d=a+b-c |
2. | d=a*b-c |
3. | d=a-b-c |
4. | d=(a+b)*c |
5. | d=(a-b)*c |
6. | d=a*b+c |
7. | d=a+b*c |
8. | d=2a+3b+4c |
9. | d=5a*b-3c |
10. | d=6a-2b+3c |
11. | d= (2a+6b)*c |
12. | d=4a+3c*b |
13. | d=2a+b-c |