Варианты решения задачки №1 (программа «Элементарный калькулятор») на языке C. Это аналоги приведенных ранее решений на языке Pascal (с оговорками). Первый вариант — с использованием переменных целого типа и условного оператора if ... else ... :
/* Программа "Элементарный калькулятор", вариант №1 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */
/* Основная функция программы */
int main()
{
int a, b; /* Переменные-целочисленные операнды */
char op; /* Переменная-символ операции */
/* Получаем исходные данные */
printf("Введите первый операнд, операцию и второй операнд: ");
scanf("%d %c %d", &a, &op, &b);
/* Выполняем операцию и выводим результат */
if (op == '+')
printf("a + b = %d\n", a + b);
else
if (op == '-')
printf("a - b = %d\n", a - b);
else
if (op == '*')
printf("a * b = %d\n", a * b);
else
if (op == '/')
printf("a / b = %f\n", (float)a / b);
else
printf("Неизвестная операция!\n");
return 0; /* Завершение основной функции (выход) с кодом 0 */
}
Текст программы сохраняем в файл с именем, например, 01.c. Работаем в Linux (например Linux Mint) и используем компилятор gcc, поэтому скомпилировать файл можно так:
$ gcc -Wall -o 01 01.c
а запустить готовую программу (при условии, что компиляция прошла без ошибок и исполняемый файл был создан) так:
$ ./01
Кстати, фрагмент кода с определением операции и выводом результата можно оформить иначе (это дело вкуса):
/* Выполняем операцию и выводим результат */
if (op == '+') {
printf("a + b = %d\n", a + b);
} else if (op == '-') {
printf("a - b = %d\n", a - b);
} else if (op == '*') {
printf("a * b = %d\n", a * b);
} else if (op == '/') {
printf("a / b = %f\n", (float)a / b);
} else
printf("Неизвестная операция!\n");
И так тоже можно (но вряд ли нужно):
/* Выполняем операцию и выводим результат */
if (op == '+') printf("a + b = %d\n", a + b);
else if (op == '-') printf("a - b = %d\n", a - b);
else if (op == '*') printf("a * b = %d\n", a * b);
else if (op == '/') printf("a / b = %f\n", (float)a / b);
else printf("Неизвестная операция!\n");
А теперь вариант, в котором вместо условного оператора if ... else ... используется оператор выбора switch ... case ... :
/* Программа "Элементарный калькулятор", вариант №2 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */
/* Основная функция программы */
int main()
{
int a, b; /* Переменные-целочисленные операнды */
char op; /* Переменная-символ операции */
/* Получаем исходные данные */
printf("Введите первый операнд, операцию и второй операнд: ");
scanf("%d %c %d", &a, &op, &b);
/* Выполняем операцию и выводим результат */
switch (op) {
case '+':
printf("a + b = %d\n", a + b);
break;
case '-':
printf("a - b = %d\n", a - b);
break;
case '*':
printf("a * b = %d\n", a * b);
break;
case '/':
printf("a / b = %f\n", (float)a / b);
break;
default:
printf("Неизвестная операция!\n");
}
return 0; /* Завершение основной функции (выход) с кодом 0 */
}
И еще один вариант (разумное предложение одного из учеников) — «украсим» немного вывод результата, а также добавим проверку «деления на ноль» (чтобы наш калькулятор при значении делителя, равном нулю, «не сломался»):
/* Программа "Элементарный калькулятор", вариант №3 */
#include <stdio.h> /* Подключаем стандартный ввод-вывод */
/* Основная функция программы */
int main() {
int a, b; /* Переменные-целочисленные операнды */
char op; /* Переменная-символ операции */
/* Получаем исходные данные */
printf("Введите первый операнд, операцию и второй операнд: ");
scanf("%d %c %d", &a, &op, &b);
/* Выполняем операцию и выводим результат */
switch (op) {
case '+':
printf("%d + %d = %d\n", a, b, a + b);
break;
case '-':
printf("%d - %d = %d\n", a, b, a - b);
break;
case '*':
printf("%d * %d = %d\n", a, b, a * b);
break;
case '/':
if (b != 0) /* Мы не умеем делить на ноль */
printf("%d / %d = %f\n", a, b, (float)a / b);
else
printf("Операция деления на ноль не определена!\n");
break;
default:
printf("Неизвестная операция!\n");
}
return 0; /* Завершение основной функции (выход) с кодом 0 */
}