#include<>
int calc(int,int,char);
void main()
{
int a,b;
char c;
printf("enter 2 nos");
scanf("%d%d",&a,&b);
printf("enter op");
scanf("%s",&c);
printf("the ans is %d\n",calc(a,b,c));
}
int calc(int a,int b,char c)
{
int ans;
switch(c)
{
case'+':ans=a+b;break;
case'-':ans=a-b;break;
}
return ans;
}
为什么该程序将输出表示为b ...当我将a,b和c用作全局变量时可以工作...如果我希望将它们作为局部变量...我应该怎么做...使用函数
char c;
...
scanf("%s",&c);
即使c
是全局变量,也是完全错误的。
您scanf
将从键盘上输入内容,并将键入的字符串存储在作为第二个参数指定的地址处(在您的情况下为c
)。但是c
,只有一个字符的空间,并且您输入的字符串scan
将至少包含2个字符(您键入的字符和终止于零的字符)。
就您而言,您将获得不确定的行为,这意味着您的程序可能
你需要这个:
char c[10];
...
scanf("%9s",c);
...
printf("the ans is %d\n",calc(a,b,c[0]));
它允许您输入长度为9(9个字符+终止零= 10)的字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句