Продолжим совершенствование нашей программы. Пусть после того, как на экран выдан результат, программа не завершает свою работу, а спрашивает пользователя, не желает ли он продолжить складывать (вычитать, делить, умножать) числа. И пусть при получении утвердительного ответа работа программы продолжается - снова запрашиваются значения двух чисел и знак арифметической операции, вычисляется результат и так далее, до тех пор, пока пользователь не откажется от дальнейшей работы с программой, введя отрицательный ответ.
Заметим, что программу, выполняющую указанные действия, можно написать по-разному. Ниже приведен один из многих возможных вариантов:

#include <stdio.h> // включить описание стандартных функций ввода-вывода
main()                     // пишем главную функцию, которая ..
{                              // ... начинается ...
float x,y,z;              // ...с описания вещественных (float) переменных x, y, z
char s, a;                // и переменных s, a - типа char (символ).
once_again:           //метку "once_again" помещаем здесь; за ней-двоеточие
printf(" input formula\n> ");         // выводится на экран подсказка 
scanf("%f",&x);         // считывается значение x,
scanf("%c",&s);         // считывается значение знака: s,
scanf("%f",&y);         // считывается значение y
if (s=='+') z=x+y;         // если s равно "+", то z присваивается X+Y
if (s=='-') z=x-y;           // если s равно "-", то z присваивается X-Y
if (s=='*') z=x*y;         // если s равно "*", то z присваивается X*Y
if (s=='/') z=x/y;           // если s равно "/", то z присваивается X/Y
printf(" %.2f %c %.2f = %.2f",x,s,y,z);             // пишем ответ
printf(" Continue(yes/no)? ");     // вопрос пользователю: продолжить?(y/n), т.е. (да/нет)
a=getch();                                     // считываем ответ
if ((a=='y') || (a=='Y')) goto once_again;     // переход на метку, если ответ положительный
}                                                     // конец программы

В приведенной выше программе используется функция getch(), которая возвращает символ, соответствующий нажимаемой пользователем клавише на клавиатуре. Таким образом, строке a=getch() происходит присваивание символьной переменной "a" значения введенного пользователем символа.
Этот вариант программы продемонстрирован, в основном, для иллюстрации оператора
goto <метка>,
передающего управление на строку программы, помеченной меткой.
В нашем случае <метка> определена как "once_again", и если на вопрос программы "Continue(yes/no)?';" т.е. "продолжить(да/нет)?", пользователь ответит "y" или "Y" ( условие "или" записывается в виде двух вертикальных черт "||": (a=='y') || (a=='Y')), то управление будет передано на строку, помеченную меткой "once_again" (т.е. на строку printf(" input formula\n> ");).
Отметим, что отношение многих программистов к оператору goto весьма отрицательно: доходит до того, что использование goto считается дурным тоном среди профессионалов и запрещается преподавателями к применению при написании программ студентами. И среди основных доводов против называют:
1) При частом использовании операторов goto и многочисленных меток в программе в них легко можно запутаться.
2) В современных языках программирования (в т. ч. в C/C++) достаточно средств организации переходов без применения goto.
Однако мы не будем столь категоричны.

                    <<ранее             к оглавлению        далее>>

                      то же на Fortran                        то же на Basic                 то же на Pascal

Используются технологии uCoz