C语言 我在哪里犯了错误,如何解决它?


#include <stdio.h>
float result(int x, int y);
float result1(int x, int y);

int main()
{
int x,y;
char z;
printf("enter x:n");
scanf("%d",&x);
printf("enter y:n");
scanf("%d",&y);
printf("enter z:n");
scanf("%s",&z);

if (z=='*')
{printf("the result is %.2f",result(x,y));}
else if (z=='/')
{printf("the result is %.2f",result1(x,y));}
else
{printf("there is an error");}
return 0;
}
float result(int x, int y)
{
float r=x*y;
return r;
}
float result1(int x, int y)
{
float r1=x/y;
return r1;
}

```so this is my code. my out put is ---
enter x:
4
enter y:
5
enter z:
*
the result is 0.00

问题是-从用户x和y中取两个整数和一个字符z,结果应该是float。如果z是*那么它应该是x*y如果z是/,那么它应该是x/y如果z不是以上任何一个,那么它将返回0你需要使用函数

所以这是一个问题,我知道它可以通过开关情况来完成,但我想尝试如果其他

问题是:

scanf("%s",&z);

格式说明符%s用于读取以空结尾的字符串。变量z是单个字符,它只能保存空字符串(只有空结束符,没有其他)。

任何其他输入都将写入内存中的某个地方,并导致未定义行为

如果要读取单个字符,请使用%c格式。但是要小心,从前面的输入中添加的Enter键的换行符也将被%c读取,您需要要求scanf跳过并忽略它。这是通过在格式字符串中添加一个前导空格来完成的。

所以调用应该是:

scanf(" %c",&z);

最新更新