#include "stdio.h" int main() { float x,y; char operate1; printf("Arithmetic expression\n"); /**********ERROR**********/ scanf("%f",&x); /**********ERROR**********/ while((operate1==getchar())!='=') { scanf("%f",&y); /**********ERROR**********/ switch(y) { case '+': x+=y; break; case '-': x-=y; break; case '*': x*=y; break; case '/': x/=y; break; } } printf("%f",x); return; }
时间: 2023-07-07 18:43:43 浏览: 160
这段代码存在一些错误:
1. 缺少 `int` 关键字声明 `operate1` 变量;
2. 在 `scanf` 函数中,缺少要求输入的字符操作符;
3. `while` 循环条件中,应该使用 `operate1` 变量来接收输入的字符操作符;
4. `switch` 语句中,应该使用 `operate1` 变量来判断输入的字符操作符。
下面是修改后的代码:
```c
#include <stdio.h>
int main() {
float x, y;
char operate1, operate2 = '+';
printf("Arithmetic expression\n");
scanf("%f%c", &x, &operate1);
while (operate1 != '=') {
scanf("%f%c", &y, &operate1);
switch(operate2) {
case '+':
x += y;
break;
case '-':
x -= y;
break;
case '*':
x *= y;
break;
case '/':
x /= y;
break;
}
operate2 = operate1;
}
printf("%f", x);
return 0;
}
```
修改后的代码通过 `scanf` 函数分别读取第一个操作数 `x` 和字符操作符 `operate1`,然后进入 `while` 循环,读取下一个操作数 `y` 和字符操作符 `operate1`,并根据前一个字符操作符 `operate2` 进行相应的计算,最后将当前字符操作符 `operate1` 赋值给前一个字符操作符 `operate2`,直至输入字符操作符 `=` 退出循环,输出计算结果 `x`。
阅读全文