#include <stdio.h> #include<math.h> int main() { char f; double a, b, result; printf("输入算式: "); scanf_s("%lf%c%lf",&a,&f,4,&b); if (double x = a) if (double y = b) { switch (f) { case '+': result = a + b; break; case '-': result = a - b; break; case '*': result = a * b; break; case '/': result = a / b; break; return 1; } } else printf("输入错误"); printf("%.2lf %c %.2lf = %.2lf", a, f, b, result); return 0; }
时间: 2023-12-31 10:04:07 浏览: 63
C标准库函数集
5星 · 资源好评率100%
你的代码存在几个问题:
1. 条件语句 if (double x = a) 中的赋值语句是无效的,应该改为 if (a)。
2. 同样道理,if (double y = b) 中的赋值语句也是无效的,应该改为 if (b)。
3. 在 switch 语句中,最后的 return 1 是无法执行到的,应该放在 switch 外面。
4. 对于除法运算,如果 b 等于 0,会导致程序崩溃。应该加上判断避免这种情况。
下面是修改后的代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
char f;
double a, b, result;
printf("输入算式: ");
scanf_s("%lf%c%lf", &a, &f, 1, &b); // 修正了 scanf_s 的格式控制字符串
if (a && b) { // 修改了条件语句
switch (f) {
case '+':
result = a + b;
break;
case '-':
result = a - b;
break;
case '*':
result = a * b;
break;
case '/':
if (b != 0) { // 避免除数为 0
result = a / b;
} else {
printf("输入错误");
return 1;
}
break;
default:
printf("输入错误");
return 1;
}
printf("%.2lf %c %.2lf = %.2lf", a, f, b, result);
} else {
printf("输入错误");
return 1;
}
return 0;
}
```
阅读全文