计算圆柱体的表面积和体积——利用%g对输出进行控制
· 阅读需 2 分钟
题目
题面描述
编写程序,键盘输入圆柱体的底面半径和高,计算并输出圆柱体的表面积和体积(圆周率按3.14计)。
输入格式:
在一行中输入圆柱体的底面半径和高。
输出格式:
对每一组输入,在两行中分别输出表面积S和体积V。
输入样例:
在这里给出一组输入。例如:
1 1.21
输出样例:
在这里给出相应的输出。例如:
S=13.8788
V=3.7994
关键点 —— %g
借助 %g
这一格式控制符进行自适应输出,以解决题目中没有规定输出浮点数精度的问题。
printf("S=%g\nV=%g", S, V);
初版
#include <stdio.h>
int main() {
double r, h, π = 3.14;
double S, V;
scanf("%lf %lf", &r, &h);
S = 2 * π * r * (r + h);
V = π * r * r * h;
printf("S=%.4lf\nV=%.4lf", S, V);
return 0;
}
错因分析
没有对题目多做分析,观察输出样例后想当然认为输出要求保留小数点后 4 位数。
值得一提的是,π
这一符号在 VS2019 中可以不需要宏直接作为变量定义和使用,而在PTA网站的编译环境中 π
将不被视为一个可定义的变量从而出现编译错误。
最终结果
#include <stdio.h>
int main() {
double r, h, Pi = 3.14;
double S, V;
scanf("%lf %lf", &r, &h);
S = 2 * Pi * r * (r + h);
V = Pi * r * r * h;
printf("S=%g\nV=%g", S, V);
return 0;
}
将造成编译错误的 π
替换掉,并使用 %g
来代替 %lf
进行输出,最终成功通过测试。