2. 编一个模拟计算器进行简单算术运算的程序(c=a运算符b),只做加、减、乘、除四种运算。(用switch结构
2. 运算符可以用char型来保存. 展开
代码如下:
#include "pch.h"
#include <iostream>
#include <functional>
#include <map>
#include <string>
using namespace std;
int add(int i, int j)
{
return i + j;
}
// 使用函数调用运算符
struct divide
{
int operator()(int i, int j)
{
return i / j;
}
};
auto mod = [](int i, int j) {return i % j; };
map<string, function<int(int, int)>> binops =
{
{"+", add}, // 使用函数指针
{"-", minus<int>()}, // 使用标准库函数对象
{"*", [](int i, int j) {return i * j; }}, // 使用未命名的lambda表达式
{"/", divide()}, // 使用函数调用运算符
{"%", mod} // 命名了的lambda表达式
};
int main()
{
int num1, num2;
string s;
while (cin >> num1)
{
cin >> s >> num2;
cout << num1 << s << num2 << "=" << binops[s](num1, num2) << endl;
}
return 0;
}
扩展资料
Switch用在编程中,如C语言中它经常跟Case一起使用,是一个判断选择代码。其功能就是控制流程流转的。
直线翻译:switch语句,即“切换”语句;case即“情况”。
switch语句的语法如下(switch,case,break和default是关键字):
switch ( 变量表达式 )
{
case 常量1 :语句;break;
case 常量2 :语句;break;
case 常量3 :语句;break;
...
case 常量n:语句;break;
default :语句;break;
}
当变量表达式所表达的量与其中一个case语句中的常量相符时,就执行此case语句后面的语句,并依次下去执行后面所有case语句中的语句,除非遇到break;语句跳出switch语句为止。如果常量表达式的量与所有case语句的常量都不相符,就执行default语句中的语句。
#include<stdio.h>
int main()
{
int a,c;
char b;
float result;
scanf("%d %c %d",&a,&b,&c); //输入需要分开,如:1 + 2
switch(b)
{
case '+':
result=a+c;
break;
case '-':
result=a-c;
break;
case '*':
result=a*c;
break;
case '/':
if( c == 0 ) //除数不能为0
{
printf("c is error");
return 1;
}
result=a/(float)c;
break;
default:
printf("b is error!");
return 1;
}
printf("%f",result);
return 0;
}
float Cal(int a, int b, char o)
{
float c = 0.0f;
switch(o)
{
case '+':
c = a + b;
break;
case '-':
c = a - b;
break;
case '*':
c = a * b;
break;
case '/':
c = a / (float)b;
break;
}
return c;
}