问题
【问题描述】
编程实现简单的交互式计算器,能进行整数的 + - * / 运算。
能进行多次计算,并用ctrl+c退出程序。
【输入形式】
从键盘读入如下形式的输入行,数据与运算符之间可以用一个或多个空格分隔:
120 + 350
【输入形式】
对于+,-及*运算,输出形式如下:
120+350=470
对于/运算,输出形式如下(小数后保留两位):
5/2=2.50
算法分析
如何读入数据及运算符?
int data1, data2;
char op;
scanf(“%d %c %d”, &data1, &op, &data2); //%c前后有空格,空格使得跳过两次非空白输入间的所有空白字符。
int data1,data2, result1;
float result2;
char op;
从标准输入中读入整数data1,运算符op及整数data2;
判断op:
若为‘+’,则result1 = data1 + data2;
若为‘-’,则result1 = data1 - data2;
若为‘*’,则result1 = data1 * data2;
若为‘/’,则result2 = data1 / data2;
若op为‘+’,‘-’或’*’,输出结果result1;
若op为‘/’,输出结果result2;
算法实现
#include <stdio.h>
int main()
{
int data1,data2, result1;
float result2;
char op;
for(; ;){
scanf("%d %c %d", &data1, &op, &data2);
switch ( op ) {
case '+': result1 = data1+data2; break;
case '-': result1 = data1-data2; break;
case '*': result1 = data1*data2; break;
case '/': result2 = (float)data1/data2; break;
default: printf("Input error!\n"); continue;
}
if(op == '/')
printf("%d%c%d=%.2f\n", data1,op,data2,result2);
else
printf("%d%c%d=%d\n", data1,op,data2,result1);
}
return 0;
}