关于S1E12中计算器使用if语句遇到的问题
以下为代码:#include <stdio.h>
int main()
{
float a, b, d;
char c;
printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:");
scanf_s("%f %c %f",&a,&c,&b);
getchar();
if (c = '+')
{
d = a + b;
printf("结果:%f", d);
}
else if (c = '-')
{
d = a - b;
printf("结果:%f",d);
}
else if (c = '*')
{
d = a * b;
printf("结果:%f", d);
}
else if (c = '/')
{
if(b=0)
{
printf("错误!");
}
d = a / b;
printf("结果:%f", d);
}
else
{
printf("错误!");
}
return 0;
}
调试时,输入了12+8并回车后会如图报错
if后面的等号换成==试一下 还是不行,呜呜呜{:10_266:} lin5720qwq 发表于 2022-8-11 21:52
还是不行,呜呜呜
更改后的代码和错误信息发出来 复制小甲鱼的代码(因为是vs2022,所以把scanf改为scanf_s),还是一样的报错,如下
0x000007FEB5B98BAE (ucrtbased.dll)处(位于 S1E12.exe 中)引发的异常: 0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突。
#include <stdio.h>
int main()
{
float a, b, d;
char c;
printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:");
scanf_s("%f %c %f", &a, &c, &b);
getchar();
if (c == '+') {
d = a + b;
printf("结果:%f", d);
} else if (c == '-') {
d = a - b;
printf("结果:%f", d);
} else if (c == '*') {
d = a * b;
printf("结果:%f", d);
} else if (c == '/') {
if (b == 0) {
printf("错误!");
} else {
d = a / b;
printf("结果:%f", d);
}
} else {
printf("错误!");
}
return 0;
} 本帖最后由 jackz007 于 2022-8-12 00:13 编辑
#include <stdio.h>
int main()
{
float a , b , d ;
int k = 0 ;
char c ;
printf("这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,请输入:") ;
if(scanf_s("%f%c%f" , & a , & c , & b) == 3) {
k = 1 ;
switch(c) {
case '+': d = a + b ; break ;
case '-': d = a - b ; break ;
case '*': d = a * b ; break ;
case '/': k = 0 ; if(b != 0.0) {d = a / b ; k = 1 ;} break ;
defalut : k = 0 ;
}
}
if(k) printf("结果:%f\n", d) ;
else printf("错误!\n") ;
}
编译、运行实况:
D:\\C>g++ -o x x.c
D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:1.234/0
错误!
D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:1.234/1.234
结果:1.000000
D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:12 + 8
错误!
D:\\C>x
这是一个极其简单的计算器,只能进行四则远算且只具备a+b的形式,别忘了用空格隔开,
请输入:12+8
结果:20.000000
D:\\C> 我用DEV-C++的试了下,没问题阿{:10_269:}
页:
[1]