- •Void main(void)
- •Void main(void)
- •Void main()
- •Void main()
- •Viod main()
- •Условные выражения
- •Void main()
- •If(Выраженне1) Выражение2;
- •If(Выражение1) Выраженпе2; else ВыражениеЗ;
- •Void main()
- •Циклические выражения
- •Void nain()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Массивы
- •Void main()
- •Void main()
- •Void main()
- •Viod main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Адреса и указатели
- •Void main()
- •Viod main()
- •Функции
- •Void main(void)
- •Void main(void)
- •Int I; double X,step();
- •Void decart(double r, double f)
- •Void main()
- •Void decart(double r,double f,double *X,double*y)
- •Void main()
- •Void rnain()
- •Void main()
- •Void main()
- •Void main()
- •Int length;
- •Объектно-ориентированное программирование и приложения с графическим интерфейсом
- •Void main(void)
- •Int MyFunc(int, int);
- •Void NewFunc(void);
- •Void main()
- •Void FuncOut();
- •Void prob::FuncOut()
- •Void main()
- •Void main()
- •Void __fastcall tForm1::Button1Click(tObject *Sender)
- •Int pascal
- •Int nCmdShow)
- •Void __fastcall tForm1::Timer1Timer(tObject *Sender)
- •Void __fastcall tForm1::okClick(tObject *Sender)
- •Int I,step;
- •Введение в численные методы
Void main()
{
int n,i=1,j=1;
scanf("%d".&n);
for(;i<=n;)j*=i++;
printf(“%d!=%d”,n,j);
}
Здесь, наоборот, невостребованными оказались Выражения1, поскольку начальные присваивания сделаны при описании переменных. Отсутствуют и Выражения3, так как все необходимые действия перенесены в Выражение4.
Поскольку циклы являются важнейшими элементами программ, рассмотрим еще несколько примеров. Следующая программа выводит на экран столбец случайных целых чисел:
#include<stdio.h>
#include<stdlib.h>
Void main()
{
int i;
for(i=10; i- -;) printf("%d\п",rand());
}
Здесь фигурирует новый заголовочный файл stdlib.h, имеющий отношение к функциям из так называемой стандартной библиотеки. В данном случае одной из таких функций является генератор случайных чисел rand(). Эта функция при каждом к ней обращении возвращает очередное целое случайное число в диапазоне от 0 до 32 766 включительно. Что это за магическое число? Это максимальное целое число типа int. С помощью генератора rand можно легко получать последовательности и вещественных чисел. Так, в результате операции rand()/32766.0 будет сгенерировано случайное вещественное число в диапазоне от 0.0 до 1.0. Подчеркнем, что число в знаменателе должно быть записано именно с десятичной точкой, как вещественное число. В противном случае будет выполнено целочисленное деление, и будет почти всегда генерироваться ... . Что? Только очень редко, примерно один раз из 30 000 будет попадаться ... Что?
Ну, а сам цикл for в последней программе будет выполнен 10 раз. На экране будет столбик из 10 случайных чисел. Обращаем внимание на то, что цикл записан весьма компактно и оптимален по быстродействию.
Теперь составим программу, решающую следующую задачу. Нужно найти среднее арифметическое всех случайных чисел, генерируемых функцией rand. в последовательности до первого числа, превышающего значение 20 000.
#include<stdio. h>
#include<stdlib.h>
Void main()
{
int i=0,a.z;
long s=0;
double sred;
printf("3ATPABKA="); scanf("%d".&z);
srand(z);
while((a=rand())<=20000) {i++; s+=a;}
sred=(double)s/i;
printf("СРЕДНЕЕ %d ЧИСЕЛ = %lf",i,sred);
}
В программе вызывается еще одна функция из стандартной библиотеки srand(z) от целого аргумента z. Число z вводится с консоли и является "затравкой" для последовательности случайных чисел, генерируемых функцией rand. Можно считать, что z является номером случайной последовательности. Каждому z будет соответствовать своя последовательность. Чтобы получать каждый раз один и тот же ряд случайных чисел, нужно вводить одно и то же z, и, наоборот, вводя каждый раз новое z, вы получите новый ряд. В переменной s накапливается сумма случайных чисел для определения среднего значения. Поскольку эта сумма может легко превысить максимально допустимую для типа int величину 32 767, мы задали переменной s тип "длинного целого" long. Понятно, что начальное значение s должно быть нулевым. Целая переменная i является счетчиком числа выполнений цикла. Она также нужна для вычисления среднего арифметического. В цикле while, непосредственно при проверке условия, переменная а получает очередное случайное значение. Цикл выполняется до тех пор, пока очередное встретившееся случайное число не превысит 20 000. В составном выражении в цикле счетчик увеличивается каждый раз на единицу и к сумме добавляется очередное число. После выхода из цикла вещественная переменная sred получает значение среднего арифметического. Для этого надо сумму разделить на счетчик. Но и s и i имеют целый тип, и операция s/i выполнится целочисленно, что было бы неверно, поскольку среднее арифметическое - вещественное число. В этой связи в программе применена новая операция, которую можно назвать приведением к нужному типу. Мы знаем, что для того, чтобы операция деления выполнилась в вещественной форме или, как говорят, в виде операции с плавающей точкой, достаточно привести числитель или знаменатель к вещественному типу. В нашей программе в числителе написано (double)s. Это и означает, что значение переменной s будет преобразовано в вещественное число (с двойной точностью). Теперь все стало на свои места, и нам осталось вывести на экран вычисленное среднее. Заметим, что переменная sred, вообще говоря, не нужна — можно было бы сразу в выражении печати использовать (double)s/i или s/(double)i.
Операция приведения к типу, конечно, универсальна. Так, если переменная Р была вещественного типа, то (int)P дает целое типа int, полученное из Р округлением, a (char)P дает символ, код которого равен округленному значению Р, если, конечно, такой символ вообще существует.