#include<stdio.h> int main() { int data1,data2,i; char op; double x1,x2; scanf("%d %d",&data1,data2); scanf("%c",&op); double y; if(op=='+') { i=data1+data2; printf("%d",i); } else if(op=='-') { i=data1-data2; printf("%d",i); } else if(op=='*') { i=data1*data2; printf("%d",i); } else { x1=(double)data1; x2=(double)data2; if(x2==0) { printf("error"); } else if(data1%data2==0) { i=x1/x2; printf("%d",i); } else if(data1%data2!=0) { y=x1/x2; printf(".2lf",y); } } return 0; }这个程序运行后为什么不能按照下列描述【问题描述】 编程实现简易的计算器:读入两个整数运算数(data1和data2)及一个运算符(op),计算表达式data1 op data2的值, 其中op可以是+,-,*,/。 【输入形式】 控制台输入运算数和运算符: 1.首先输入以空格分隔的两个整数,分别是data1和data2; 2.输入一个字符作为运算符op,op可以是“+”,“-”,“*”,“/”;。 输入时,data1、data2、op之间各留有一个空格。具体格式见样例输入。 【输出形式】 控制台输出运算结果。作除法运算时,如果data2为0,输出提示“error”,若能够整除,则输出为整数,否则输出结果小数点后应保留两位有效数字。 【样例输入1】 23 5 * 【样例输出1】 115 【样例输入2】 20 0 / 【样例输出2】 error
时间: 2024-03-16 18:44:36 浏览: 77
程序还是有问题的,主要是在输出小数结果时和判断除数为0时的输出格式不正确。修改后的程序如下:
```
#include<stdio.h>
int main() {
int data1, data2, i;
char op;
double x1, x2;
scanf("%d %d", &data1, &data2);
scanf(" %c", &op); // 修正读入运算符时的问题
double y;
if (op == '+') {
i = data1 + data2;
printf("%d", i);
} else if (op == '-') {
i = data1 - data2;
printf("%d", i);
} else if (op == '*') {
i = data1 * data2;
printf("%d", i);
} else if (op == '/') {
x1 = (double) data1;
x2 = (double) data2;
if (x2 == 0) {
printf("error"); // 输出 "error" 而不是 "ERROR"
} else if (data1 % data2 == 0) {
i = x1 / x2;
printf("%d", i);
} else if (data1 % data2 != 0) {
y = x1 / x2;
printf("%.2f", y); // 输出小数点后两位,使用 "%.2f"
}
}
return 0;
}
```
这个程序可以按照题目要求进行计算,可以输入两个整数和一个运算符,根据运算符进行相应的计算,如果是除法运算,会判断除数是否为零以及被除数是否能够整除除数,如果都不满足则输出小数结果。如果除数为零则输出 "error"。
阅读全文