页面“每天一命令之telnet”与“求圆的面积”之间的差异
(页面间的差异)
跳到导航
跳到搜索
小 (导入1个版本) |
docker>Evan |
||
第1行: | 第1行: | ||
− | = | + | 增量式开发 |
+ | 编写一个程序求圆的面积,圆的半径以两个端点的坐标(x1,y1) 和(x2,y2) 给出. 首先 分析和分解问题 ,把大问题分解成小问题,再对小问题分别求解 | ||
+ | |||
+ | =初始版本= | ||
<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; | ||
+ | } | ||
+ | |||
+ | 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> | </pre> | ||
− | [[category: | + | [[category:c]] |
2018年3月20日 (二) 04:00的版本
增量式开发 编写一个程序求圆的面积,圆的半径以两个端点的坐标(x1,y1) 和(x2,y2) 给出. 首先 分析和分解问题 ,把大问题分解成小问题,再对小问题分别求解
初始版本
#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 ***/
改进
#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; }