C语言程序简化一例
?牐犛捎谑艿浇滩募榷ㄋ悸返挠跋欤颐呛芏嗳嗽诒嘈碈语言程序的时候显得思路虽然清晰,但代码稍显冗长。若加以改进,来一个“程序压缩”,不但利用了C语言使用灵活的优点,还能使人养成编写程序短小简洁的好习惯。一举两得,何乐不为?
?牐犗志僖焕得鳎?
?牐燵例]用π/4≈1-1/3+1/5-1/7+……公式求π的近似值,直到最后一项的绝对值小于10e-6(10的-6次方)为止。
#1?牐犜猓?
?牐?#include <math.h>
?牐爉ain()
?牐爗
?牐爄nt s;
?牐爁loat n,t,pi;
?牐爈ong int i=0;
?牐爐=1;
?牐爌i=0;
?牐爊=1.0;
?牐爏=1;
?牐爓hile((fabs(t))>1e-6)
?牐爗 pi=pi+t??
?牐爊=n+2;
?牐爏=-s;
?牐爐=s/n;
?牐爙
?牐爌i=pi*4;
?牐爌rintf("pi=%10.6f\n",pi);
?牐爙
#1?牐犘碌慕夥ǎ?
?牐爉ain()
?牐爗
?牐爁loat pi=0,s=-1;
?牐爈ong int i;
?牐爁or(i=1;i<1e6;i+=2)pi+=(s*=-1)/(float)i;
?牐爌rintf(“pi=%10.6f\n”,pi*4);
?牐爙
#1?牐犓得鳎?
?牐犖裁赐慕峁诙龀绦蛉慈绱硕绦∧兀科涫担窃谌龅胤浇辛搜顾酰?
?牐?1.原解是先定义变量,再赋值;而它是在定义变量的过程中赋值。
?牐?2.原解在每次循环时对符号变量s、分母n和符号变量与分母的比值t分别赋值;而它则是在一个表达式pi+=(s*=-1)/(float)i中完成。
?牐?3.原解用于判断循环结束的方法是判断t是否小于10e-6,而我则是直接判断分母是否大于10e6。区别在于:在原解中t时正时负,因而要用到绝对值函数fabs(),那么就必须调用math.h;而我的解中i既是循环变量,又是分母,它恒为正,就不用math.h了。
?牐牼陨先鲅顾酰绦蚓痛蟠蠹跣×耍臼纠难顾趼蚀锏搅?46%。
?牐牪灰】闯绦虻难顾酢?CIH的作者陈盈豪就是以程序短小简练著称,他曾经以一个三行的程序令计算机专业的学生拜服。相信你学会了压缩程序后,这也不再是什么难事了。