织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

欧博官网C++ Простейший калькулятор

时间:2025-07-17 20:59来源: 作者:admin 点击: 2 次
Поскольку вы учите С++, вместо printf и scanf лучше использовать cout и cin. В них не нужно заботиться о формате принимаемого и выводимого значений, п

Поскольку вы учите С++, вместо printf и scanf лучше использовать cout и cin. В них не нужно заботиться о формате принимаемого и выводимого значений, плюс нету такой проблемы, как попадание в буфер ввода не того символа. В вашем случае вместо %d для считывания значений типа float нужно использовать %f, а для считывания символа %c. Во время работы вашего кода после поправки форматирования у меня, например, вместо считывания символа операции считывался знак новой строки, и ввод переходил сразу на второе число. Для избежания этого следовало бы очистить буфер ввода командой fflush(stdin). Однако все эти вопросы решаются использованием cout и cin.

Далее, у вас дважды объявлена переменная c, одна - глобальная, а вторая - в области видимости case 1:. Внутри case 1: вы присваиваете результат локальной переменной, а команда вывода результата на экран находится вне области видимости этой переменной, и выводит на экран глобальную переменную c, которой ничего присвоено не было, отсюда и постоянный результат 0.

Вот моя версия кода:

#include <iostream> using namespace std; float a, b, c; char d; int p; int main() { while (p != 2) { cout << "1 = calculator \n 2 - exit \n"; cin >> p; switch (p) { case 1: { cout <<"First number "; cin >> a; cout << "Action with numbers "; cin >> d; cout << "Second number "; cin >> b; if (d == '+') c = a + b; if (d == '-') c = a - b; if (d == '*') c = a * b; if (d == '/') c = a / b; } case 2: { break; } } cout << "Result =" << c <<endl; } }

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2025-07-18 08:07 最后登录:2025-07-18 08:07
栏目列表
推荐内容