|
docker>Evan |
第1行: |
第1行: |
− | 增量式开发
| + | #重定向 [[Firefox安装和汉化]] |
− | 编写一个程序求圆的面积,圆的半径以两个端点的坐标(x1,y1) 和(x2,y2) 给出. 首先 分析和分解问题 ,把大问题分解成小问题,再对小问题分别求解
| |
− | | |
− | =初始版本=
| |
− | <pre>
| |
− | #include <math.h> | |
− | #include <stdio.h>
| |
− | double distance(double x1, double y1, double x2, double y2)
| |
− | {
| |
− | double dx = x2 - x1;
| |
− | double dy = y2 - y1;
| |
− | // printf("dx is %f\n dy is %f\n",dx,dy);
| |
− | //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
| |
− | double dsquared = dx * dx + dy * dy;
| |
− | // printf("dsquared is %f\n", dsquared);
| |
− | double result = sqrt(dsquared);
| |
− | return result;
| |
− | }
| |
− | | |
− | double area(double radius)
| |
− | {
| |
− | return 3.1416 * radius * radius;
| |
− | }
| |
− | | |
− | int main(void)
| |
− | {
| |
− | // printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
| |
− | // distance is 5.000000
| |
− | // printf("area is %f\n",);
| |
− | double radius=distance(1.0, 2.0, 4.0,6.0);
| |
− | double result = area(radius);
| |
− | printf(" area is %f\n",result);
| |
− | // area is 78.540000
| |
− | | |
− | return 0;
| |
− | }
| |
− | | |
− | /****
| |
− | evan@kalipc:~/github/learn-c/one-stop-c$ gcc -Wall p57.c
| |
− | /tmp/ccbMqPPq.o:在函数‘distance’中:
| |
− | p57.c:(.text+0x69):对‘sqrt’未定义的引用
| |
− | collect2: error: ld returned 1 exit status
| |
− | | |
− | gcc -Wall -lm p57.c
| |
− | | |
− | ***/
| |
− | | |
− | </pre>
| |
− | | |
− | =改进=
| |
− | <pre>#include <math.h>
| |
− | #include <stdio.h>
| |
− | double distance(double x1, double y1, double x2, double y2)
| |
− | {
| |
− | double dx = x2 - x1;
| |
− | double dy = y2 - y1;
| |
− | // printf("dx is %f\n dy is %f\n",dx,dy);
| |
− | //printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
| |
− | double dsquared = dx * dx + dy * dy;
| |
− | // printf("dsquared is %f\n", dsquared);
| |
− | double result = sqrt(dsquared);
| |
− | return result;
| |
− | }
| |
− | | |
− | double area(double radius)
| |
− | {
| |
− | return 3.1416 * radius * radius;
| |
− | }
| |
− | | |
− | double area_point(double x1, double y1, double x2, double y2)
| |
− | {
| |
− | return area(distance(x1, y1, x2, y2));
| |
− | }
| |
− | int main(void)
| |
− | {
| |
− | // printf("distance is %f\n",distance(1.0, 2.0, 4.0,6.0));
| |
− | // distance is 5.000000
| |
− | // radius=distance(1.0, 2.0, 4.0,6.0);
| |
− | // double result = area(radius);
| |
− | printf(" area is %f\n",area_point(1.0, 2.x, 4.0, 6.0));
| |
− | // area is 78.540000
| |
− | return 0;
| |
− | }
| |
− | </pre>
| |
− | | |
− | [[category:c]] | |