作业帮 > 综合 > 作业

C++编写简单计算器为了简化问题,此计算器只要求计算一位数加减乘除和求模运算.比如:1+23-19*74/35%2这样的

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/21 12:13:45
C++编写简单计算器
为了简化问题,此计算器只要求计算一位数加减乘除和求模运算.比如:
1+2
3-1
9*7
4/3
5%2
这样的一位数算式.给出若干个表达式,请给出它们的结果
必须使用switch语句
Input
输入包含多组数据,每组数据为一行,为一个只占3个字符的数学表达式.数据保证除法运算中和求模运算中不出现0.
Output
每组数据输出一行,为表达式的结果.对于除法运算,要求保留小数点后两位.
#include
using namespace std;
int main()
{
char a[5];//定义字符数组便于读取
int ans,x,y;//ans是计算结果
cin>>a;
x=a[0]-'0';y=a[2]-'0';//x,y分别为符号两边的操作数,因为读入是字符变量,故要-'0'
switch(a[1])//判断符号
{
case '+'://符号是加号
ans=x+y;
break;//switch默认不会退出,若无break,将执行下列case语句.
case '-'://减号
ans=x-y;
break;
case '*'://乘号
ans=x*y;
break;
case '/'://除号
ans=x/y;
break;
case '%'://取模
ans=x%y;
break;
}
cout
再问: 这个要求输入多组算式。每组一行,最后输出多行结果,每组一行。而且除法运算要求保留小数点后两位。
再答: //这次改了下,直接输出结果了,省得麻烦 #include using namespace std; int main() { char a[5]; int ans,x,y,n,i; float ansc; scanf("%d",&n);//读入数据组数 for(i=1;i>a; x=a[0]-'0';y=a[2]-'0'; switch(a[1]) { case '+': printf("%d\n",x+y); break; case '-': printf("%d\n",x-y); break; case '*': printf("%d\n",x*y); break; case '/': printf("%.2f\n",(float)x/(float)y);//.2f表示保留两位小数 break; case '%': printf("%d\n",x%y); break; } } return 0; }
再问: 呃。。。是一个一个的输入算式,一个一个的得出得数,而且不能输入循环数。而是能一直输入算式的计算器。。。。
再答: 追问3次就要财富值了,在百度hi上说吧。 http://web.im.baidu.com/ 死循环吗?一直读入,除非关闭这个程序。那就这样吧: #include using namespace std; int main() { char a[5]; int ans,x,y,n,i; float ansc; while(1) { cin>>a; x=a[0]-'0';y=a[2]-'0'; switch(a[1]) { case '+': printf("%d\n",x+y); break; case '-': printf("%d\n",x-y); break; case '*': printf("%d\n",x*y); break; case '/': printf("%.2f\n",(float)x/(float)y);//.2f表示保留两位小数 break; case '%': printf("%d\n",x%y); break; } } return 0; }