【题目描述】
输入半径r,输出圆的直径、周长、面积,数与数之间以一个空格分开,每个数保留小数点后4位。
【输入】
输入半径。
【输出】
如题述。数与数之间以一个空格分开。
【输入样例】
1.0
【输出样例】
2.0000 6.2832 3.1416
【程序分析】
本题给出了几种对PI的实现方式,也进行了比较
推荐使用const,类型安全,编译器会进行类型检查
用预定义宏方式#define,不会进行类型检查
【程序实现】
#include <stdio.h>
#define PI 3.14159265358979323846 // 定义圆周率π
int main() {
double r; // 定义半径变量
scanf("%lf", &r); // 读取半径
double diameter = 2 * r; // 计算直径
double circumference = 2 * PI * r; // 计算周长
double area = PI * r * r; // 计算面积
// 输出结果,每个数保留4位小数,用空格分隔
printf("%.4lf %.4lf %.4lf\n", diameter, circumference, area);
return 0;
}
本例中,用#define来定义了圆周率PI。
下面采用const常量方式定义:
#include <stdio.h>
int main() {
const double PI = 3.14159265358979323846; // 使用const定义圆周率π常量
double r; // 定义半径变量
scanf("%lf", &r); // 读取半径
double diameter = 2 * r; // 计算直径
double circumference = 2 * PI * r; // 计算周长
double area = PI * r * r; // 计算面积
// 输出结果,每个数保留4位小数,用空格分隔
printf("%.4lf %.4lf %.4lf\n", diameter, circumference, area);
return 0;
}
用标准数学库精度更高
#include <stdio.h>
#include <math.h> // 包含数学库,其中有M_PI常量
int main() {
double r;
scanf("%lf", &r);
double diameter = 2 * r;
double circumference = 2 * M_PI * r; // 使用math.h中定义的M_PI
double area = M_PI * r * r;
printf("%.4lf %.4lf %.4lf\n", diameter, circumference, area);
return 0;
}
几种方式的比较:
- const常量:更符合C++风格,类型安全
- math.h的M_PI:标准库提供,精度有保障
- #define宏:预处理替换,无类型检查
113

被折叠的 条评论
为什么被折叠?



