DEV CPP
打开DEV CPP,新建一个C语言工程,工程名根据个人喜好取符合规则的名字即可。
在工程的main.c中输入下面的代码: #include
程序编写完成,使用菜单栏的“Execute”->“Compile&Run”编译并运行工程。
工程运行后,按提示先输入基数数值,比如200,然后输入占比数值,比如3,那么3占200为1.5%,计算结果相符。
不过这个代码存在一个毛病就是:当输入的基数为0时不会进行报错提示,会计算出一个莫名其妙的符号出来,这个就是除法溢出的结果,我们需要对程序进行优化。
最简单的办法是,输入一个数后进行判断,如果合法则继续下一步,否则重新,录入知道输入合法的数据为止,可以使用do-while语句。 do{ printf('输入最大数据:'); scanf('%lf', &maxNum); if(maxNum <= 0) { printf('输入的最大数据必须大于0!\r\n'); } }while(maxNum <= 0); //当输入的maxNum不大于0时则表示输入错误
增加基数合法性判断的代码运行后,当输入基数为0时会提示输入非法,并要求再次输入,当接收到合法的基数后才会转下一步。。
与此同时,我们也可以为计算百分比的函数进行容错处理,比如当接收到的占比小于0时,提示不能输入负数,然后退出程序。当输入的基数为0时也进行提示,然后退出程序,放置溢出造成崩溃。double GetPercent(double num1, double maxNum) { if(num1 < 0) { printf('现有数据不能为负数!\r\n'); system('pause'); exit(0); } if(maxNum == 0) { printf('被除数不能为0'); system('pause'); exit(0); } return ((num1 / maxNum) * 100); }
除法溢出是程序设计最忌讳同时也是很容易犯的错误之一。