c语言教程,编程必背50个代码

首页 > 教育培训 > 作者:YD1662023-04-30 13:25:28

编译,运行,程序输出 2,是正确的。至此,就完成了根据坐标计算长方形长度的函数,而且测试正确,又有信心往下继续写了。下面同样的方式来完成计算宽度的函数:

double width(double y1, double y2) { double W; W = fabs(y1-y2); return W; }

好了,计算长和宽的函数都完成了。现在可以来写计算面积的函数了,计算面积的话,就需要输入两个坐标了,也就是四个变量,然后要在计算面积的函数里计算长方形的长和宽,然后再把长宽相乘计算面积。

double area(double x1, double y1, double x2, double y2) { double W = width(y1, y2); double L = length(x1, x2); printf("W=%f, L=%f\n", W, L); return 0.0; }

如果担心程序写的不对,可以写到这里停下来,先把长和宽计算后打印出来。因为你已经测试过 width 和 length 函数都正确了,如果写到这里出问题了,那就说明肯定是 area 函数写的有问题,这样就不用去之前写的代码中找问题了。编译,运行发现一切正常:

c语言教程,编程必背50个代码(5)

确定没问题了,我们就可以继续往下写 area 函数了。

double area(double x1, double y1, double x2, double y2) { double W = width(y1, y2); double L = length(x1, x2); // printf("W=%f, L=%f\n", W, L); double S = W*L; return S; }

area 函数中的,包括之前我们测试 width 和 length 函数中的 printf 都起到了类似脚手架的作用:在盖房子时很有用,但它不是房子的一部分,房子盖好之后就可以拆掉了。房子盖好之后可能还需要维修、加盖、翻新,又要再加上脚手架,这很麻烦,要是当初不用拆就好了,可是不拆不行,不拆多难看啊。写代码却可以有一个更高明的解决办法:把 printf 的代码注释掉。

到这里我们就写完了计算面积的代码,赶紧放到 main 函数中测试:

#include <stdio.h> #include <math.h> int main() { printf("S=%f\n", area(1.1, 1.1, 3.1, 3.1)); return 0; }

c语言教程,编程必背50个代码(6)

成功了,至此,终于一点一点的(增量式)用 C 语言解决了问题。当然,熟练了以后,可以直接写出求面积的函数:

double area2(double x1, double y1, double x2, double y2) { return fabs(x1-x2)*fabs(y1-y2); }

CCopy

这样写简洁得多了。但是如果出错了呢?只知道是这一长串表达式有错,但根本不知道错在哪,而且 area2 整个函数就一个语句,插 printf 都没地方插。所以用临时变量有它的好处,程序更清晰,调试更方便。而且,这样写,length和width函数还要不要?不要的话删掉,如果有些情况,只需求长方形的长和宽呢?那留着 length 和 width 函数咋样?这样的话,length,width 以及 area2 函数有相同的代码,一旦出了错,修改 length,width 还得记着修改 area2 函数。

维护重复的代码是非常容易出错的,在任何时候都要尽量避免。因此,尽可能复用以前写的代码,避免写重复的代码。按照这个思路来看,还是 area 函数好一点。更进一步的,我们发现 width 和 length 函数的代码逻辑其实是一样的,只是变量的名字不一样,这也应该避免,width 和 length 函数可以用 distance 函数代替:

double distance(double p1, double p2) { double d; d = fabs(p1-p2); return d; }

c语言教程,编程必背50个代码(7)

整理一下,最终代码如下:

#include <stdio.h> #include <math.h> double distance(double p1, double p2) { double d; d = fabs(p1-p2); return d; } double area(double x1, double y1, double x2, double y2) { double W = distance(y1, y2); double L = distance(x1, x2); // printf("W=%f, L=%f\n", W, L); double S = W*L; return S; } int main() { printf("S=%f\n", area(1.1, 1.1, 3.1, 3.1)); return 0; }

欢迎在评论区一起讨论,质疑。文章都是手打原创,每天最浅显的介绍C语言,喜欢我的文章就关注一波吧,可以看到最新更新和之前的文章哦。

上一页12末页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.