我编写了一则c++程序,可是电脑运行时显示有错,我没看出有错,请高人指点

#include "stdio.h"
int main()
{
int t,s;
float I,award;
printf("enter I=");
scanf("%f",&award);
t=100000;
s=I/t;
if(s>=10)
{ award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+4*t*0.015+(I-10*t)*0.01;
printf("award=%f",award);
}
else
{
switch(s)
case 0: award=I*0.1;
printf("award=%f",award);break;
case 1: award=t*0.1+(I-t)*0.075;
printf("award=%f",award);break;
case 2:
case 3: award=t*0.1+t*0.075+(I-2*t)*0.05;
printf("award=%f",award);break;
case 4:
case 5: award=t*0.1+t*0.075+2*t*0.05+(I-4*t)*0.03;
printf("award=%f",award);break;
case 6:
case 7:
case 8:
case 9: award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+(I-6*t)*0.015;
printf("award=%f",award);
}
return 0;
}
电脑运行结果上显示错误:
error C2043: illegal break
error C2046: illegal case。
这很明显llegal break指的是break有误,illegal case指的是case4/6/7/8有误,但这都是正确的,我一直不能理解电脑运行结果,望高人指出其中的错误,谢谢

你的问题就在于,你的case语句没有用大括号括起来,编译器没有分出来,他是switch的语句。
加一个大括号,就没错误了。
#include "stdio.h"
int main()
{
int t,s;
float I,award;
printf("enter I=");
scanf("%f",&award);
t=100000;
s=I/t;
if(s>=10)
{ award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+4*t*0.015+(I-10*t)*0.01;
printf("award=%f",award);
}
else
{
switch(s)
{case 0: award=I*0.1;
printf("award=%f",award);break;
case 1: award=t*0.1+(I-t)*0.075;
printf("award=%f",award);break;
case 2:
case 3: award=t*0.1+t*0.075+(I-2*t)*0.05;
printf("award=%f",award);break;
case 4:
case 5: award=t*0.1+t*0.075+2*t*0.05+(I-4*t)*0.03;
printf("award=%f",award);break;
case 6:
case 7:
case 8:
case 9: award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+(I-6*t)*0.015;
printf("award=%f",award);
}}
return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-04-15
我帮你修改了。不只是break和case问题,这两个是因为你的switch后面没有加大括号{}..
#include "stdio.h"
int main()
{
int t,s;
double I,award;
printf("enter I=");
scanf("%lf",&I);
t=100000;
s=(int)(I/(double)t);
if(s>=10)
{ award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+4*t*0.015+(I-10*t)*0.01;
printf("award=%lf",award);
}
else
{
switch(s)
{
case 0:
award=I*0.1;
printf("award=%lf",award);
break;
case 1: award=t*0.1+(I-t)*0.075;
printf("award=%lf",award);break;
case 2:
case 3: award=t*0.1+t*0.075+(I-2*t)*0.05;
printf("award=%lf",award);break;
case 4:
case 5: award=t*0.1+t*0.075+2*t*0.05+(I-4*t)*0.03;
printf("award=%lf",award);break;
case 6:
case 7:
case 8:
case 9: award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+(I-6*t)*0.015;
printf("award=%lf",award);
}
}
return 0;
}

我编写了一则c++程序,可是电脑运行时显示有错,我没看出有错,请高人指...
case 9: award=t*0.1+t*0.075+2*t*0.05+2*t*0.03+(I-6*t)*0.015;printf("award=%f",award);}} return 0;}

VC++软件运行程序时出现如下图问题,如何解决?我已经重新安装一次了,请 ...
重装多麻烦。去网上下载一个MFC42D.dll,然后放在和exe一样的目录下。

请高人指点,怎样处理电脑应用程序错误
如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止。(重启电脑)。●在检查运行regedit进入注册表, 在HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\ShellExecuteHooks 下,应该只有一个正常的键值{AEB6717E-7E19-...

...输入的不合法,那就将陷入死循环,为什么?如何理解?求高人指点...
当你在控制台输完数据敲回车后,输入的数据以及回车换行符被同时送到输入缓冲区,例如你输入的数据为a,然后回车,此时输入缓冲区中就有两个字符,一个是‘a’,一个是回车换行符‘\/n’,接着程序读取,由于类型不匹配,读取失败,并没有读走输入缓冲区中的数据,也就是说,此时输入缓冲区中还是‘...

C语言编程显示没有错误没有 但黑色框没有出来 求高人指点小弟啊 不好意...
print 程序里有吗?

求高人指点一下我以下的错误百出的c++程序。。。因为我自己看不懂编译...
Zhu(double r1=0,double h=0);\/\/Zhu构造函数,c++不能从基类继承构造函数 double vzhu(double r1,double height);};Zhu::Zhu(double r1,double h):Circle(r1),height(h){}\/\/Zhu构造函数 double Zhu::vzhu(double r1,double height){ return 3.14*r1*r1*height;} \/\/zhui class Zhui:...

...应用程序错误——”,不知道是哪儿不对,请高人指点指点!
1、请你用系统自带的系统还原,还原到你没有出现这次故障的时候修复(或用还原软件进行系统还原,如果进不了系统,开机按F8进入安全模式还原系统)。2、如果故障依旧,使用系统盘修复,打开命令提示符输入SFC \/SCANNOW 回车(SFC和\/之间有一个空格),插入原装系统盘修复系统,系统会自动对比修复的。3、...

c# 编写串口通讯程序,测试时发现通讯过程中有问题,请高手指点
try { \/\/出现错误的代码段 } catch(Exception e){ e.Message就是错误的描述 } 恢复通信方法可以加个定时器定时检查IsOpen状态

...程序错误,是什么情况啊,怎么解决,请求高人指点
1.右击IE图标——属性——高级——选中“禁用脚本调试”,取消“显示每个脚本错误的通知”;2.右击我的电脑图标——属性——高级——错误报告——选中“禁用错误报告”。还不行,就--- 请不要盗用我的答案!!一号方案【新P】注意【原创】:1.安全模式下,效果更好!2. 以下所要使用的软件,都...

关于一个C++的简单程序,输入数字判断范围,输入字符返回输入有误...
您的中文表达也不太容易懂。字符编码采取ASCII码,在这个码制里,数字0~9是相连的10个码,'0'最小,'9'最大。您要判断输入的字符是否为数字,只需要加如下判断就行了(假设您读入的字符在变量ch中):if ( ch>='0' && ch<='9' ) { \/\/这里是输入数字的处理代码 } else { \/\/这里是...

相似回答
大家正在搜