操作员不在switch语句中工作
这是我的代码,但在输入后,每次都会给出默认语句。请帮忙。我是C的初学者。 它没有给出结果操作员不在switch语句中工作,c,switch-statement,C,Switch Statement,这是我的代码,但在输入后,每次都会给出默认语句。请帮忙。我是C的初学者。 它没有给出结果 #include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { int a; int b; char op; printf ("Enter first number: "); scanf ("%d", & a ); printf (
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int main()
{
int a;
int b;
char op;
printf ("Enter first number: ");
scanf ("%d", & a );
printf ("Enter second number: ");
scanf ("%d", & b );
printf ("Enter the operator: ");
scanf ("%s", op );
switch(op)
{
case '+' :
printf("Sum is %d", a+b );
break;
case '-' :
printf("Difference is %d", a-b );
break;
case '*' :
printf("Product is %d", a*b );
break;
case '/' :
printf("Quotient is %d", a/b );
break;
default :
printf("Wrong operator used!");
break;
}
return 0;
}
#包括
#包括
#包括
int main()
{
INTA;
int b;
char op;
printf(“输入第一个数字:”);
scanf(“%d”和“&a”);
printf(“输入第二个数字:”);
scanf(“%d”和“b”);
printf(“输入运算符:”);
scanf(“%s”,op);
开关(op)
{
格“+”:
printf(“总和为%d”,a+b);
打破
案例'-':
printf(“差额为%d”,a-b);
打破
案例“*”:
printf(“产品为%d”,a*b);
打破
案例“/”:
printf(“商为%d”,a/b);
打破
违约:
printf(“使用了错误的运算符!”);
打破
}
返回0;
}
这是:
scanf ("%s", op );
是未定义的行为,op
是char
,但是%s
需要char*
(如果您希望在那里实际存储一个不需要的字符串,则需要一个以上的char
)
你的意思是:
scanf(" %c", &op); // Note the space before '%', this matters.
还要始终检查返回值,I/O可能会失败。我想您的意思是
scanf(“%c”,&op)代码>,而不是scanf(“%s”,op)代码>。您的代码甚至可以在没有警告的情况下编译吗<代码>扫描频率(“%s”,op)
不正确,因为当scanf需要一个char*
时,您正在传递一个char
。也许您的意思是scanf(“%c”和&op)代码>。不工作…返回0作为值…现在甚至无法输入运算符请仔细阅读-每条注释和答案在%c
之前都有空格。请看。欢迎来到堆栈溢出!您似乎忘记启用一组好的警告。对于GCC,我建议至少使用-Wall-Wextra-Wwrite strings
;还考虑<代码> -WPDEANTIC- WARIX界限< /代码>以识别其他常见错误。不工作……使用SCANF(“%C”,和OP);它甚至不要求我输入运算符…我输入两个数字,然后按“回车”,它返回0I三次扫描(“%c”,op);。。。。。但不工作…它显示text.exe在我必须输入时停止工作operator@SameerYadav尝试复制粘贴到您的程序中的确切代码。thnx展开…我编写了“%c”而不是“%c”…thnx用于helping@SameerYadav请通过“接受”这个答案来表示你的感谢。有一个复选框。