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; }

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

它正在提供输出

“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",&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);