转载自中国计算机技术联盟
我最近做近做了一个数据结构作业(C语言编写),主要完成对二叉树的操作,
关于它的所有操作我的做完了,只是再和别人的程序对比时,我发现有个别同样的功能,
我的代码稍显冗长,经过改进,明显简洁了不少
现举一个简单点的例子吧:
[例]用π/4≈1-1/3+1/5-1/7+……公式求π的近似值,直到最后一项的绝对值小于
10e-6(10的-6次方)为止。
->解:
#include
main()
{
int s;
float n,t,pi;
long int i=0;
t=1;
pi=0;
n=1.0;
s=1;
while((fabs(t))>1e-6)
{ pi=pi+t
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf("pi=%10.6f\n",pi);
}
-> 简化后:
main()
{
float pi=0,s=-1;
long int i;
for(i=1;i<1e6;i+=2)pi+=(s*=-1)/(float)i;
printf(“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了。
经过以上三个压缩,程序就大大减小了。
利用了C语言使用灵活的优点,还能使人养成编写程序短小简洁的好习惯,希望大家在编写其它程序的时候能简化自己的程序.
中国计算机技术联盟版权所有
|