新手求教 c语言 编程
发布网友
发布时间:2022-04-22 16:56
我来回答
共4个回答
热心网友
时间:2023-10-22 09:41
额
h和r都要自己读入
只能有一行,在一个读入语句中
输出必为整数
我只学过pascal诶,给你讲下思路吧:
先读入h和r
然后计算体积(例如6升)
然后,20升来判断
如果 算出来的体积大于20
那么直接输出1
否则 如果 20升能整除算出来的体积
就输出 (20 整除 体积)
否则 (输出 20升 整除体积+1)
因为只学了pascal,所以附上pascal代码,你可以找人翻译下
Var
h,r,s:real;
k:integer;
begin
read(h,r);//一行读入
s:=3.14159*r*2*h;//计算体积
k:=20 div 1000;//将20升转换成毫升,也就是平方厘米
if (s>k) or (trunc(s)=k) then write(1)//大于等于的情况输出1
else if k mod trunc(s)=0 then write(k div trunc(s)) //若能整除便直接输出
else write(k div trunc(s)+1)//不能整除输出整出结果+1
end.
可能在数据上有点问题啊
就是实数和整数的处理有问题
你可以稍稍修改下
代码仅供参考
望采纳!
热心网友
时间:2023-10-22 09:42
/*
输入数据没有按要求,可以输入小数,甚至负数,但是体积非正数时不给出结果。
当然如果输入类似123.df2 ,23.2a3 这样的数据 ,那就看scanf的处理能力了。
*/
#inlcude <stdio.h>
#define PAI 3.14159
#define Elephant 20 //大象的喝水量,20L=20*1000立方厘米。ps:宏定义一般都大写
main()
{
float h=0,r=0,temp;
float area;//面积
float volume;//桶的体积,假设水装满,那么体积即水量。
int n=0;
printf("请先后输入小圆桶高度和底面半径,两个数据用,隔开,单位(cm):");
scanf("%f,%f",&h,&r);
area=PAI*r*r;//底面积
volume=area*h;
if(volume > 0)//如果体积不为零
{
temp=(Elephant*1000.0)/volume;//精确到小数的桶数
n=temp;//取整数部分
if(temp > n)//如果得到的不是整数
n=n+1;
prinf("\n实际需要桶数:%f,大象至少要喝水的桶数:%d",temp,n);
}
else
{
printf("请输入合理高度与半径!");
return;
}
getch();//按任意键,程序结束。(记得程序完成后控制台会关闭,看不到结果)
}
好久没用scanf,printf了,希望参数类型没问题。
没编译过 不知道你的编译环境 turbo c 还是vc。
输入有一行,大概是指一次接受两个输入数据。
问多少桶,从严谨的角度来讲自然是整数。
热心网友
时间:2023-10-22 09:42
程序就自己写 吧 挺简单的 我回答下输出 应该是 整型 因为桶数不能是小数。 输出时先强制转化为整型,再加1. 因为强制转化会把小数舍掉。
热心网友
时间:2023-10-22 09:43
int main(void)
{
int h, r, n;
double nf;
printf("please input data. h r:");
scanf("%d %d", &h, &r);
printf("\r\n");
nf = (double)20000 / (3.14159 * r * r * h);
n = (int)nf + 1;
printf("n=%f %d\r\n", nf, n);
return 0;
}