一只大象要喝 2020 升水才能解渴,但现在只有一个深 h 厘米,底面半径为 r厘米的小圆桶(h和 r 都是整数)。问大象至少要喝多少桶水才会解渴。
我给你看个示例,你就明白了:
/* elephantsDrinking.c -- 实现大象喝水 */
#include <stdio.h>
#include <math.h>
// 定义圆周率常量
#define PI 3.1415926
/*
一只大象要喝 2020 升水才能解渴,但现在只有一个深 h 厘米,底面半径
为 r 厘米的小圆桶(h 和 r 都为整数),问大象至少要喝多少桶水才会解渴?
*/
int main(void)
{
// 定义整型变量 h, r
int h, r;
// 提示性输出
printf("请输入小圆桶的高度和底面半径:");
// 读取高和底面半径
scanf("%d%d", &h, &r);
// 计算体积,单位平方厘米
double volume = PI * r * r * h;
// 计算喝多少桶水的数量
double num = 2020.0D / (volume / 1000000.0D);
// 输出喝多少桶的数量
printf("总共要喝%.0f桶\n", floor(num));
return 0;
}
floor()
函数可以向下取整,但是返回的数也是一个 double
类型的浮点数。
使用整型变量接收其值会有精度丢失的风险,所以最后的结果不对
此外,你的 scanf() 函数的使用也有问题,你直接把参与也放进了字符串里,这是不对的,
可能导致程序代码无法运行,或运行有问题
Scanf那句改成 ("%d %d", &h,&r)
#include <stdio.h>
#include <math.h>
#define PI 3.14159
int main()
{
int h, r, result;
scanf("%d %d", &h, &r);
double volume = PI * r * r * h;
result = ceil(2020.0 / volume); // 向上取整
printf("%d", result);
return 0;
}
这还是不行啊
#include<iostream>
using namespace std;
int main()
{
int h,r,a;
cin>>h>>r;
a=2020/(3.14*r*r*h)+1;
cout<<a;
return 0;
}