#include<iostream>
using namespace std;
#include<math.h>
#include<stdio.h>void  main()
{
char a;
int b,c,result;
cin>>b>>c;
a=getchar();switch(a)

case '+': result=(b+c);break;
case '-': result=(b-c);break;
case '*': result=b*c;break;
case '/': result=b/c;break;
default:break;
}
cout<<result<<endl;
}
switch语句为什么没有执行?

解决方案 »

  1.   


    #include<iostream>
    using namespace std;
    #include<math.h>
    #include<stdio.h>void main()
    {
    char a;
    int b,c,result;
    cin>>b>>c>>a;switch(a)
    {  
    case '+': result=(b+c);break;
    case '-': result=(b-c);break;
    case '*': result=b*c;break;
    case '/': result=b/c;break;
    default:break;
    }
    cout<<result<<endl;
    }
      

  2.   

    或者改成#include<iostream>
    using namespace std;
    #include<math.h>
    #include<stdio.h>void main()
    {
    char a;
    int b,c,result;a=getchar();
    cin>>b>>c;//>>a;switch(a)
    {  
    case '+': result=(b+c);break;
    case '-': result=(b-c);break;
    case '*': result=b*c;break;
    case '/': result=b/c;break;
    default:break;
    }
    cout<<result<<endl;
    }你原来的代码应该是a取到了回车键,结果执行了default分支了
      

  3.   

    你原来的代码应该是a取到了回车键,结果执行了default分支了
      

  4.   

    楼主,我对流那个概念不懂,但是这个语句不是没有执行switch语句,是执行了default,因为a的值为32,也就是空格,所以执行了default,如果你输入 2 3+就可以执行了,getchar是获取了输入b之后那个字符。再为什么我就不懂了
      

  5.   

    谢谢大家啊,你们的讲解让我知道了原来代码的错误在哪里。我后来试出来了,下面也可以:
    #include<iostream.h>
    #include<iostream>
    //using namespace std;
    #include<math.h>
    #include<stdio.h>void  main()
    {
    char a;
    long double b,c,result;
    cin>>b>>c;
    a=getchar();switch(a)

    case '+': result=(b+c);break;
    case '-': result=(b-c);break;
    case '*': result=b*c;break;
    case '/': result=b/c;break;
    default:break;
    }
    cout<<result<<endl;
    }
    只是输入时,要按下面格式
    2 3
    +
    才行。主要还是输入的格式问题吧。