#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);