C++:没有匹配 if 的非法 else,语法错误 求解答!

前略
int main (){
int a,b,m,res;
char p;
cout<<"请输入第一个整数:";
cin>>a;
cout<<"请输入第二个整数:";
cin>>b;
cout<<"请输入运算符号(+,-,*,/,%):";
cin>>p;
{
if (p==+)
m=0;
else if (p==-)
m=1;
else if (p==*)
m=2;
else if (p==/)
m=3:
else
m=4;
}
switch (m)
{
case 0:
res=a+b;
cout<<res<<endl;
break;
case 1:
res=a-b;
cout<<res<<endl;
break;
case 2:
res=a*b;
cout<<res<<endl;
break;
case 3:
res=a/b;
cout<<res<<endl;
break;
case 4:
res=a%b;
cout<<res<<endl;
break;
default:
cout<<"ERROR"<<endl;
}
return 0;
}

生成结果
error C2059: 语法错误 : “)”
error C2181: 没有匹配 if 的非法 else

什么意思啊?

第1个回答  2013-03-14
小问题是else if(p==/) m=3; 是分号不是冒号。这个和错误没什么关系。
真正错误是char p。你p定义类型是字符类型,那么就要p=='+',p=='-',p=='*',p=='/'。这个才是错误点。
第2个回答  2013-03-14
你可以检查一下if之后有没有加大括号把if和else之间的东西扩起来。
第3个回答  2013-03-14
if (p==+) 这 种写法不对,应该写成if (p==‘+’)追问

是‘+’还是“+"?

追答

是'+',单引号,表示字符,- * / 同理
并且你
else if (p==/)
m=3:

写错了,用分号
m=3;

本回答被提问者采纳
第4个回答  2013-03-14
你的if和else用错了,你的代码格式发出来不对,很难看出来

C++:没有匹配 if 的非法 else,语法错误 求解答!
小问题是else if(p==\/) m=3; 是分号不是冒号。这个和错误没什么关系。真正错误是char p。你p定义类型是字符类型,那么就要p=='+',p=='-',p=='*',p=='\/'。这个才是错误点。

...跪求大神解答c++的问题,为什么总是error: 'else' without a previous...
if ((x>=0)&(y>=0)) cout<<"鸡的数量为:"<<x<<endl; cout<<"兔的数量为:"<<y<<endl; else cout<<"无解"<<endl;修改为 if ((x>=0)&(y>=0)){ cout<<"鸡的数量为:"<<x<<endl; cout<<"兔的数量为:"<<y<<endl;} else cout<<"...

c++环境下编写代码,输入0至9任意数字,若范围正确,显示出来,若不是...
int a;cin >> a;if(a>9 || a<0)cout <<"input err"<<endl;else cout << a ;

c++编译无误,运行不了,急求解答
else if(n1==1) return x; else if(n1==2) return (3*x*x-1)\/2; else

求C++的大佬来解答,一个比大小的程序。
b1和b2),然后使用一系列的条件判断语句来比较两组牌的大小,最终将比较结果存储在变量result中。具体地,根据题目给出的牌面大小规则依次比较两组牌的大小,并按照题目要求输出比较结果。假设玩家输入的都是合法的牌面数字,因此没有进行错误检查。如果需要处理输入不合法的情况,还需要添加相应的代码。

关于C++的几个问题,希望高手来帮忙解答下
else if(mark+m>v.size()&&((mark+m)%(v.size()))!=0){ v.erase(v.begin()+((mark+m)%v.size())-1);mark=((mark+m)%(v.size()+1))-1;} else if (mark+m>v.size()&&((mark+m)%v.size())==0){v.erase(v.begin()+v.size()-1);mark=v.size();} } cout<...

C++初学者坐等大神解答啊。求1000到2000所有的质数问题!
等我晚上回来给你详细解答哈。

c++编程求解答。统计各个成绩段的人数。
假设20个学生的成绩保存在数组a[20],4个区间的人数保存在num[4]并初始化为0 则主要计算语句为 for(i=0;i<20;i++){ if(a[i]<60)num[0]+=1;else if(a[i]<70)num[1]+=1;else if(a[i]<85)num[2]+=1;else num[3]+=1;} ...

C++ 编程问题、求大神解答
{cout<<setprecision(4)<<pow(q,i)<<" "; sum+=pow(q,i); if((i+1)%10==0) cout<<endl;} cout<<"等比数列的前n项的和为:"<<endl;cout<<"1+q+q^2+...+q^n="<<setprecision(4)<<sum<<endl;system("pause");return 0;}我也是初学者,共同进步哈 ...

提示[C++ Error] Unit1.cpp(10): E2141 Declaration syntax error 求解 ...
include <conio>在这句话下面加 using namespace std;如果不想加最好是 include <iostream.h> include <conio.h> 还有,int main()改成int main(void)这样写会好一些 还有,bool e 定义的是布尔型最好是赋布尔值ture||false 其他地方没仔细看 ...

相似回答