Во втором примере на экран будут выводиться все символы до появления символа «Новая строка». А в первом примере будут выводиться все символы, включительно и символ «Новая строка» (только после печати этого символа, если он введен, в цикле производится проверка символа «Новая строка» и действие цикла завершается).
Цикл выполняется хотя бы один раз, так как проверка осуществляется только после его завершения.
в) Оператор цикла со счетчиком
for (выр1; выр2; выр3) или for (выр1; выр2; выр3) {
оператор; операторы;
}
Выр1 – инициализация, проводится только 1 раз в начале цикла.
Выр2 - проверка условия окончания цикла (производится перед каждым возможным выполнением тела цикла. Когда выражение становится ложным, цикл завершается).
Выр3 – наращивание счетчика цикла (выражение вычисляется в конце каждого выполнения тела цикла).
Схема выполнения цикла
For Истина
Ложь
Если какое-либо из выражений отсутствует, то ‘;’ все равно ставится. Могут отсутствовать все выражения, и тогда цикл бесконечен. Цикл for очень многообразен.
Примеры:
1). for (n = 1; n < 1000; n++) ; счет в порядке возрастания
2). for ( i = 10; i > 0; i--) ; счет в порядке убывания
3). for (n = 2; n < 60; n = n + 12) ; значение переменной n будет увеличиваться на 12 при каждом выполнении тела цикла (после этой команды можно ввести printf(“%d\n”,n) и тогда на экран будут выводиться числа 2,14,26,38,50,62)
4). Можно вести подсчет с помощью символов:
for (ch = 'a'; ch <= 'z'; ch++) ;
printf(«Величина кода ASCII для %c равна %d.\n», ch, ch);
на печать будут выведены все буквы от a до z вместе с их кодами ASCII.
5). Наращивание может происходить и после выполнения действий в выражениях (значение переменных будет меняться при каждой итерации):
for (x = 1; y <= 75; y = 5*(x++)+10) ;
for (i = 1, cost = 20; i <= 16; i++, cost+= 17) ;
6). Можно опустить одно или более выражений (но нельзя опустить символы ;). Необходимо только включить в тело цикла несколько операторов, которые приведут к завершению его работы.
ans = 2;
for (n = 3; ans <=25;)
ans=*n;
Значение переменной asn сначала будет равно2, затем на первой итерации цикла примет значение 6, затем 18 и 54.
7). Бесконечный цикл
for (;;) ;
пустое условие всегда считается истинным.
8). Первое выражение не обязательно должно инициализировать переменную. Там может стоять оператор некоторого специального вида, например printf. Необходимо только помнить, что первое выражение выполняется только один раз, до начала выполнения остальных частей цикла.
for (printf ("Запомните введение числа!\n"); num = =6;)
scanf (" % d, &num);
г) Вложенные циклы
Если внутри одного цикла находится другой цикл, то эта конструкция называется вложенный цикл. Внутренний цикл выполняется столько раз, сколько задано во внешнем цикле.
// Пример программы на вложенные циклы
// Вывести на экран числа от 0 до 99 по 10 в каждой строке
#include <stdio. h>
void main(void)
{
int num=0;
int i, j;
for(i=0; i<10; i++) {
for(j=0; j<10; j++)
printf("%4d",num++);
printf("\n");
}
}
8. Операторы безусловных переходов
а) Оператор goto метка. Осуществляет переход на любую точку программы вверх и вниз. Имя метки задается согласно правилам создания идентификатора.
goto m1;
...
m1: оператор;
б) Оператор break. Служит для досрочного выхода из цикла. Применяется в любых циклах. В случае вложенных циклов осуществляет выход только из внутреннего цикла.
while (условное выражение1) {
...
if(условное выражение2)
break;
...
}
в) Оператор continue. Служит для пропуска группы операторов и выхода на начало цикла.
for(i=0; i<10; i++) {
...
if(условное выражение2)
continue;
...
}
while((ch = getchar())!=EOF){
if (ch=='/n')
break; (continue;)
putchar (ch);
}
8. СТАНДАРТНЫЕ ФУНКЦИИ ВВОДА И ВЫВОДА
Функции ввода вывода служат для ввода данных в программу с клавиатуры и вывода их на экран.
printf (). Служит для вывода данных на экран
printf ("Управляющая строка", список параметров);
Параметрами могут быть переменные, константы, выражения.
Управляющая строка - строка символов, показывающая, как должны быть напечатаны параметры. Обязательно берётся в кавычки. Состоит из литерных констант и спецификаций преобразования:
%d – целое %f – плавающий формат
%c – символ %lf – двойной точности
%s – строка %e – экспоненциальная форма
%i – целое %o – восьмиричная с. с.
%g – плавающий формат %x – шестнадцатеричная с. с.
%u – беззнаковое целое
Каждому аргументу должна соответствовать cвоя спецификация преобразования. %% - чтобы печатать символ %.
printf("Число pi равно % f/n," PI);
Модификаторы спецификаций преобразования
Общий вид модификаторов спецификаций преобразования
%[выравнивание][ширина][доп. признаки]символ преобразования
%[-][ширина]d – выравнивание по влевой границе
%[-][ширина][.точность]f
%[-][+][ширина]d – целое со знаком
%[-][#][ширина][l]u(o, x) – целое без знака, выводится 0 или 0х для восьмиричной или шестнадцатиричной системы счисления
%[-][+][#][ширина][.точночть]f(e, g) - # вывод дес. точки даже при нулевой точности. По умолчанию точность 6 цифр.
Цифры - ширина поля. Если число больше, то оно выходит за ширину поля.
%4.2f - количество печатаемых цифр после запятой 2, поле шириной 4 позиции.
/%d/ /3.36/ - "выбор по умолчанию"
%2d /336/
%10d / 336/
%-10d /336 /
%f /1234.560059/ 1234.56
%e /1.234560E+03/
%4.2f /1234.56/
%3.1f /1234.6/
%10.3f / 1234.560/
%10.3e / 1.234E+0.3/
/%s/ /'Выдающееся исполнение'/ 22 c.
/%25.s / Выдающееся исполнение'/
% 25.5s / Выдаю/
%-25.5 s /Выдаю /
% d 336
% o 520
% x 150
% d -336
% u 65200 от 32768-65536 - отрицательные числа
65535- -1 65536 - 336 = 65200
printf (" %d %c ", 'A', 'A'); //На экране 65 A
sсanf(). Функция ввода данных с клавиатуры.
scanf ("Управляющая строка", список адресов параметров);
Используются те же спецификаторы, что и printf(). В качестве параметров указываются адреса переменных.
scanf("%d",&num);
Функции ввода/вывода одного символа getchar(), putchar().
Объявлены в заголовочном файле stdio. h.
# include <stdio. h>
void main() {
char ch;
ch = getchar(); тоже самое
putchar(ch); putchar (getchar());
}
Функции небуфиризированного ввода с клавиатуры
(прямой ввод на экран без нажатия клавиши ENTER). Объявлены в заголовочном файле <conio. h>.
char ch=getch(); // ввод без эхоотображения.
char ch=getche(); //с эхоотображением на экране.
Ввод/вывод в поток в С++
Система ввода/вывода – неотъемлемая часть среды программирования С++, и она занимает в языке особое место.
В заголовочном файле iostream. h содержаться следующие объявления одного потока ввода и трех потоков вывода:
extern istream_withassign _Cdecl cin; //Объект потока ввода
extern ostream_withassign _Cdecl cout; //Объект потока вывода
extern ostream_withassign _Cdecl cerr; //Объект потока вывода ошибок
extern ostream_withassign _Cdecl clog; //Объект буферизованного потока вывода ошибок
Поток является промежуточным звеном между программой и устройством ввода и вывода. Поток может быть присоединён к различным устройствам: консоли, принтеру, фиктивному устройству, а так же к файлам на диске.
cin >> v; // Прочитать из стандартного потока ввода
cout << v; // Записать в стандартный поток вывода
Обычно стандартный поток вывода cout присоединен к экрану терминала. Простейшая программа, использующая операцию вывода, имеет следующий вид:
#include <iostream..h>
void main(void)
{
cout << “Hello, world!”;
}
Приоритет операций << и >> позволяет помещать в оператор вывода арифметические выражения, не прибегая к использованию скобок, зато при использовании логических выражений или операций присваивания скобки использовать необходимо:
cout << “x+y =” << x+y <<”; x&y =” << (x&y) << “\n”;
Для ввода данных в программу используется стандартный поток ввода. Он имеет много общего с выводом данных. Обычно стандартный поток ввода соединен с клавиатурой cin.
int i;
float y;
cin >> i >> f ;
Форматирование вывода
Для форматирования вывода можно установить несколько флагов, для этого используются функции-члены setf, unsetf.
unsigned v =12345;
cout << "Before: " << v << endl;
cout. setf(cout. hex); //Модификация потока
cout << "After: " << v << endl;
Для форматирования можно подключить заголовочный файл Iomanip. h, тогда используем манипуляторы
cout << "In hexadecimal v == " << hex << v << endl;
cout << "In decimal v == " << dec << v << endl;
ends вставить нулевой завершающий символ в строку
endl начать новую строку
oct 8-ричная система счисления
Для выравнивания по правому краю целочисленных переменных можно задать: cout. width(8); но он не оказывает влияние на следующее выводимое значение.
Заключительная программа
Задача. Три бригады собирают в саду яблоки. Написать программу учета сбора яблок каждой бригадой. Определить, сколько яблок было собрано за день и средний заработок в каждой бригаде.
# include <stdio. h>
# include <conio. h>
void main (void)
{
int worker1, worker2, worker3; //Кол-во человек в бригадах
int weight1, weight2, weight3; //Вес яблок
char ch;
float cost; //Стоимость яблок
int num, w; //Номер бригады и вес яблок
clrscr();
weight1 = weight2 = weight3 = 0;
printf("Введите количество студентов в каждой бригаде\n");
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 |


