Microsoft Visual C++ 6.0 switch 括号的对应问题!

yumencat 2009-06-19 10:32:54
昨天在论坛上问了问题,得到大侠修改后复制运行成功,按大虾手法修改自己的原始程序,编译通不过,研究了半天发现,原来是程序最后几行的“}”位置出现了问题,奇怪的是手动对齐后程序就能通过编译了,自动回车输入的话Microsoft Visual C++ 6.0 直接给我对歪了。这是Microsoft Visual C++ 6.0本身的问题么,感觉很不人性化啊,还是我程序可能有点缺陷的,但是手工后确实可以运行。下面是程序,大侠们再帮我分析下,感激!!
#include <iostream.h>
#include <stdlib.h>

int main()
{
float a,b,c;
char oper1,oper2;
cout <<"输入一个表达式:例如2+3*4" <<endl;
cin>>a>>oper1>>b>>oper2>>c;
switch(oper1)
{
case'+':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'-':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a+b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'*':
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a*b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
break;
}
case'/':
{
if(b!=0)
{
switch(oper2)
{
case'*':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b*c <<endl;
break;
}
case'/':
{
if(c!=0)
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b/c <<endl;
}
else
{
cout <<"erro" <<endl;
exit(1);
}
break;
}
case'+':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b+c <<endl;
break;
}
case'-':
{
cout <<a <<oper1 <<b <<oper2 <<c <<'=' <<a/b-c <<endl;
break;
}
default:
cout <<"error" <<endl;
exit(1);
}
}
else
{
cout <<"error" <<endl;
exit(1);
}
break;

}
default:
cout <<"error" <<endl;
exit(1);
} //就是这个神奇的括号,它没有自动和第一个switch对应起来,手动调了位置才通过了编译。
return 0;
}
...全文
101 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Walf_ghoul 2009-06-20
  • 打赏
  • 举报
回复
晕了,VC6的问题可真多啊。。。
Sou2012 2009-06-20
  • 打赏
  • 举报
回复
不会吧
pathuang68 2009-06-20
  • 打赏
  • 举报
回复
仔细检查
lambert_s 2009-06-20
  • 打赏
  • 举报
回复
好神奇!
yumencat 2009-06-19
  • 打赏
  • 举报
回复
我发现问题了,每次复制我都是新建工程的,新建工程后可以运行,老的那个怎么改都没用。so....我又错了。应该是我老的建工程的时候选错了选项,⊙﹏⊙b汗。
coolyama 2009-06-19
  • 打赏
  • 举报
回复
switch if嵌套太多了,建议优化
chenzhp 2009-06-19
  • 打赏
  • 举报
回复
有这档子事儿?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧