前言:
大家好,我决定日后逐渐更新c刷题训练营的内容,或许能帮到入门c语言的初学者,如果文章有错误,非常欢迎你的指正!
💥🎈个人主页:Dream_Chaser~ 🎈💥
✨✨刷题专栏:http://t.csdn.cn/baIPx
⛳⛳本篇内容:c语言刷题训练营 第三讲(牛客网)
BC25-计算体重指数
来源:计算体重指数_牛客题霸_牛客网 (nowcoder.com)
题目描述
问题:
计算BMI 指数(身体质量指数)。 BMI 指数 (即身体质量指数,简称体质指数又称 体重 ,英文为Body Mass Index,简称 BMI ),是用体重公斤数除以身高米数平方得出的数字,是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准。主要用于 统计 用途,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时, BMI 值 是一个中立而可靠的 指标 。
输入描述:
一行,两个整数,分别表示体重(公斤),身高(厘米),中间用一个空格分隔
输出描述:
一行,BMI指数(保留两位小数)。
示例1
输入
70 170
输出
24.22
代码实现:
#include <stdio.h> int main() { //输入 int weight = 0; int high = 0; double bmi = 0.0; scanf("%d %d", &weight, &high); //计算机BMI bmi = weight / ((high / 100.0) * (high / 100.0));//身高米数的平方 //输出 printf("%.2lf\n", bmi); return 0; }
解析:
要得到浮点数,要进行浮点数除法,这里就得保证/两端的操作数至少有一个数是浮点数.
拿出计算器,可以看出 带一位小数*带一位小数的结果是带两位的
所以最后面printf的时候 .2lf保留两位小数是符合前面的逻辑的
前提知识:
%.nf
:其中n
是一个整数,用于指定要显示的小数位数。例如,printf("%.2f", 3.1415926);
将输出3.14
,只保留两位小数。%e
或%E
:用于以科学计数法表示浮点数。默认情况下,它会使用6位小数和指数形式。例如,printf("%e", 12345.6789);
将输出1.234568e+04
。%.ne
或%.nE
:其中n
是一个整数,用于指定要显示的小数位数。例如,printf("%.2e", 12345.6789);
将输出1.23e+04
,只保留两位小数,并以指数形式表示。
执行:
BC26- 计算三角形的周长和面积
来源:计算三角形的周长和面积_牛客题霸_牛客网 (nowcoder.com)
题目描述
根据给出的三角形3条边a, b, c(0 < a, b, c < 100,000),计算三角形的周长和面积。
输入描述:
一行,三角形3条边(能构成三角形),中间用一个空格隔开。
输出描述:
一行,三角形周长和面积(保留两位小数),中间用一个空格隔开,输出具体格式详见输出样例。
示例1
输入
3 3 3
输出
circumference=9.00 area=3.90
代码实现:
int main() { double a=0,b=0,c=0; double circumference=0.0;//周长 double area=0.0;//面积 scanf("%lf %lf %lf",&a,&b,&c); circumference=a+b+c; //海伦公式 double p=circumference/2; area=sqrt(p*(p-a)*(p-b)*(p-c)); printf("circumference=%.2lf area=%.2lf",circumference, area); return 0; }
解析:
注意,输入输出,照着公式写代码就行。
这个题目,如果使用 float 来求解,答案的精度是不够的,所以试错后,使用double类型合适
海伦公式:
计算平方根的函数: 注意计算次方不能写成^
执行:
BC27-计算球体的体积
来源:计算球体的体积_牛客题霸_牛客网 (nowcoder.com)
题目描述
给定一个球体的半径,计算其体积。其中球体体积公式为 V = 4/3*πr^3,其中π= 3.1415926
输入描述:
一行,用浮点数表示的球体的半径。
输出描述:
一行,球体的体积,小数点后保留3位。
示例1
输入
3.0
输出
113.097
#include <stdio.h> #include<math.h> int main() { double r=0.0; //半径 double pi=3.1415926;//圆周率 scanf("%lf",&r);//输入半径 double V=(4.0/3)*pi*pow(r,3);//4后面小数点0 可以算出一位小数,pow的意思是r的3次方 //4/3执行整数除法 printf("%.3lf",V); }
解析: 🧨✨
注意,输入输出,照着公式写代码就行。
这个题目,如果使用 float 来求解,答案的精度是不够的,所以试错后,使用double类型合适。
这里要知道float和 double 为啥精度有区别,简单介绍一下。
float
是单精度浮点数类型,占用4个字节(32位),用于表示带有小数部分的实数。它可以表示大约6到7个有效数字,并具有约7位的十进制精度。double
是双精度浮点数类型,占用8个字节(64位),用于表示更大范围和更高精度的实数。它可以表示大约15到16个有效数字,并具有约15位的十进制精度。因此,
double
的精度比float
更高,可以表示更小的值和更大的值,同时具有更多的有效数字。但是,由于double
使用更多的存储空间,需要更多的计算资源和内存。在选择使用
float
还是double
时,需要根据具体的应用需求来决定。如果对精度要求不高,而且对内存和计算资源有限,可以使用float
。如果需要更高的精度或者处理范围更广的数据,可以选择double
执行:
注意: