scanf()不从控制台获取输入 #包括 int main(){ 浮子a、b、r; char op; scanf(“%f”、&a); scanf(“%c”和&op); scanf(“%f”和“b”); scanf(“%f”、&r); 开关(op){ 格“+”: r=a+b; printf(“%f”,r); 打破 案例'-': r=a-b; printf(“%f”,r); 打破 案例“*”: r=a*b; printf(“%f”,r); 打破 案例“/”: r=a/b; printf(“%f”,r); 打破 违约: printf(“Nekaj ne delas prav”); } 返回0; }
它正在提供输出 “Nekaj ne delas prav” 不接受任何意见。而不是使用“scanf()”,以及为什么它直接将默认值作为输出而不是使用switch语句。更改:scanf()不从控制台获取输入 #包括 int main(){ 浮子a、b、r; char op; scanf(“%f”、&a); scanf(“%c”和&op); scanf(“%f”和“b”); scanf(“%f”、&r); 开关(op){ 格“+”: r=a+b; printf(“%f”,r); 打破 案例'-': r=a-b; printf(“%f”,r); 打破 案例“*”: r=a*b; printf(“%f”,r); 打破 案例“/”: r=a/b; printf(“%f”,r); 打破 违约: printf(“Nekaj ne delas prav”); } 返回0; },c,scanf,C,Scanf,它正在提供输出 “Nekaj ne delas prav” 不接受任何意见。而不是使用“scanf()”,以及为什么它直接将默认值作为输出而不是使用switch语句。更改: #include<stdio.h> int main() { float a, b, r; char op; scanf("%f",&a); scanf("%c",&op); scanf("%f",&b); scanf("%f",&a
#include<stdio.h>
int main() {
float a, b, r;
char op;
scanf("%f",&a);
scanf("%c",&op);
scanf("%f",&b);
scanf("%f",&r);
switch(op) {
case '+':
r = a + b;
printf("%f", r);
break;
case '-':
r = a - b;
printf("%f", r);
break;
case '*':
r = a * b;
printf("%f", r);
break;
case '/':
r = a / b;
printf("%f", r);
break;
default:
printf ("Nekaj ne delas prav");
}
return 0;
}
致:
或者更好:
scanf("%c", &myNothing);
另外,请确保启用了编译器警告。在代码中,请更改
myNothing = getchar();
到
如果在%c
之前没有前导空格,则在上一次输入之后,由上一次回车键启动的\n
将被读取并视为%c
格式说明符的有效输入。因此,第二个scanf()
在代码> %c>代码>之前的空白将消耗所有领先的空白,如<代码> char < /代码> s,包括以前输入键按下的<代码> \n>代码>,只考虑非空白输入。
注:
%f
格式说明符读取并忽略前导的\n
,因此在这种情况下,不需要在%f
之前显式提供前导空格
main()
的签名是intmain(void)
您应该使用预览功能检查代码是否正确插入且可读。预览是WYSIWYG,因此对于某些特定输入是可靠的,请提供预期和实际输出。请格式化你的代码,使其可读,你听说过缩进吗?你真正的问题是什么?请(远)比“它不工作”更具体。我投票决定结束,因为寻求调试帮助的问题(“为什么这个代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:另外,花点时间以可读的方式格式化。我已经这样做了,但仍然不起作用。您确定它不起作用吗@Dikshant您的输入是什么?您是如何提供输入的?“是的,它不工作,我无法提供输入,它只是以“Nekaj ne delas prav”的形式输出,然后程序终止。@Dikshant这很奇怪!!您是如何编译代码和运行二进制文件的?
myNothing = getchar();
scanf("%f",&a);
scanf("%c",&op);
scanf("%f",&b);
scanf("%f",&r);
scanf("%f",&a);
scanf(" %c",&op); //notice here
scanf("%f",&b);
scanf("%f",&r);