因为你的程序所有的case后面都少了一个空格,所以导致输入任何值都执行default部分,自然数值不对,
比如你输入1000,程序执行default部分,b=10000+7500+10000+6000+6000-9990=29510
把所有的case后面都加一个空格就行了,另外相同的case语句可以省略,象下面的程序一样
完整的程序如下
#include<stdioh>
int main(){
int a;
float b;
printf("请输入你的营业额:");
scanf("%d",&a);
switch(a/100000){
case 0:b=01a;break;
case 1:b=01100000+(a-100000)0075;break;
case 2:
case 3:b=01100000+0075100000+(a-200000)005;break;
case 4:
case 5:b=01100000+0075100000+005200000+(a-400000)003;break;
case 6:
case 7:
case 8:
case 9:b=01100000+0075100000+005200000+200000003+(a-600000)0015;break;
default:b=01100000+0075100000+005200000+200000003+4000000015+(a-1000000)001;break;
}
printf("奖金是%2f",b);
return 0;
}
看是发生了什么错误,大多数错误都可以通过改写原编码来解决。
程序的错误可以抽象分为三类:语法错误、运行错误和逻辑错误。
1、语法错误
是指由于编程中输入不符合语法规则而产生的。程序编译就通不过,程序不能运行起来。此类错误最简单,调试起来比较容易
例如:表达式不完整、缺少必要的标点符号、关键字输入错误、数据类型不匹配、循环语句或选择语句的关键字不匹配等。通常,编译器对程序进行编译的过程中,会把检测到的语法错误以提示的方式列举出来,又称为编译错误。
语法错误的调试,则可以由集成开发环境提供的调试功能来实现,在程序进行编译时,编译器会对程序中的语法错误进行诊断。
编译诊断的语法错误分为3中:致命错误、错误和警告。
(1)致命错误:这个错误大多是编译程序内部发生的错误,发生这类错误时,编译被迫中止,只能重新启动编译程序,但是这类错误很少发生,为了安全,编译前最好还是先保存程序。
(2)错误:这个错误通常是在编译时,语法不当所引起的。例如:括号不匹配,变量未声明等。产生这类错误时,编译程序会出现报错提示,我们根据提示对源程序进行修改即可。这类错误是出现最多的。
(3)警告:是指被编译程序怀疑有错,但是不确定,有时可强行通过。例如:没有加void声明的主函数没有返回值,double数据被转换为float类型等。这些警告中有些会导致错误,有些可以通过。
常规解决方法:此类错误一般程序编译系统会自动提示相应的错误地点和错误原因,比如哪一行代码少了个括号等诸如此类的提示,常见的错误,看懂直接改正即可,如果是看不懂原因,可以将错误提示信息输入搜索引擎查找一下,一般都能找到具体的解决办法。或者有些编程平台会本身提供一个本地或者在线的信息库,提供详细的错误原因和解决办法,比如微软的NET开发平台。
2、运行错误
指程序在运行过程中出现的错误。程序通过语法错误检测,但是运行的时候出现错误,导致程序被迫终止,此类错误有特定的发生条件,因此能够准确的定位错误代码段,因而调试也比较方便。
例如:除法运算时除数为0 、数组下标越界、文件打不开、磁盘空间不够、数据库连接错误等。
此类错误发生时,编译平台一般也会提示相应的信息,对于常规的错误会有比较精确地提示,但有时提示的错误原因会比较模糊,但因为此类错误一般在程序运行时,只在特定的条件下才会发生,所以根据错误发生的条件,能够大致判断程序出错的代码段,结合错误的原因,也能比较方便的调试出错误。
3、逻辑错误
程序运行后,没有得到设计者预期的结果,这就说明程序存在逻辑错误。这种错误在语法上是有效的,但是在逻辑上是错误的。
程序运行了,也没有出错,但是执行出来的结果不是用户想要的,分为两种情况:
A、 能够看出错误:比如查询工资大于5000的人员名单,却出现了3000的;
B、 看不出错误,直到因缘际会发现程序肯定出错了,后果很严重:比如进行一个符合大型运算,把某个常数输入错了,最后的结果人工无法判断对错,又以该结果进行其它的运算等等,最后发现错了误差过大,就得从头排查错误。
D
[解析] A中控制的循环条件是 s ≤10,但每次循环先将计数变量 i 赋值 i = i +1,后给 s 赋值 s = s + i 从而循环结束后, s =2+3+4+5=14,最后输出 s =14
B中控制循环的变量 i 从1变到10,每次循环,循环变量sum=sum+ i ,循环结束sum=1+2+3+…+10=55,并将其输出.
C中控制循环的计数变量 i 从1变到10,但在每次循环中先给 i 赋值 i = i +1,然后才赋值sum=sum+ i ,故循环结束时,sum=2+3+4+…+11=65,最后输出sum
D中控制循环的条件是 s ≤10,第一次( i =1)循环后, s =0+1=1,第二次( i =2)循环后, s =1+2=3,第三次( i =3)循环后, s =3+3=6,第四次( i =4)循环后, s =6+4=10仍满足条件 s ≤10,故再执行第五次( i =5)循环, s =10+5=15,最后输出 s =15故选D
运行时错误是指程序在编译器的编译下,没有发现语法,关键字使用等编译的错误,在编译器看来,你写的程序通过了,但在运行时,发生了该程序不能运行的错误,这个一般是逻辑错误,这类问题查找起来比较麻烦!
以上就是关于为什么我这个很简单程序运行结果计算不正确请问哪个步骤错误了全部的内容,包括:为什么我这个很简单程序运行结果计算不正确请问哪个步骤错误了、java 程序运行错误怎么办、下面程序运行后输出结果错误的是( )等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)