一、寫在前面
我也不知道我為什么要寫這個鬼畜的東西←_←才不是為了水blog量什么的(划掉),其實是為了明天給學弟學妹們傳教准備。
這道題對完全對c語言沒有概念的小萌新們極度友好,可以鍛煉小萌新們的代碼能力。
本篇blog附的代碼會在極大限度上追求代碼的可讀性,並介紹一個實用的函數——ceil,下面我們來正式進入講解。
二、題目
描述
一只大象口渴了,要喝20升水才能解渴,但現在只有一個深h厘米,底面半徑為r厘米的小圓桶(h和r都是整數)。問大象至少要喝多少桶水才會解渴。
輸入
輸入有一行:包行兩個整數,以一個空格分開,分別表示小圓桶的深h和底面半徑r,單位都是厘米。
輸出
輸出一行,包含一個整數,表示大象至少要喝水的桶數。
樣例輸入
23 11
樣例輸出
3
附上原題鏈接→_→http://noi.openjudge.cn/ch0103/14/
三、題目分析
由於是對萌新用,我就寫詳細一些。本題大致分為如下這些步驟:
1、定義兩個浮點型變量h,r,用於存儲后來讀入的數據,並進行相關計算;
2、讀入h,r;
3、輸出20/(Pi*r*r*h/1000)向上取整的結果(數學問題不予解釋
以上,我們發現我們遇到了一個問題——h,r最開始是浮點型變量,但最后我們要將其經過一定的計算后對計算結果上取整后輸出,這時我們要引入一個神奇的函數——ceil。
ceil是一個定義在math.h里的函數,其功能是返回大於或等於指定表達式的最小整數。
有點繞是嗎?我們來看幾個例子:
ceil(4.3)=5;
ceil(4.9)=5;
ceil(5.0)=5.
是不是明白了一些呢?但需要注意的是,ceil返回的函數值依舊是浮點型,我們需要使用(int)將其強行轉為整型后輸出。
四、代碼實現

1 #include<stdio.h> 2 #include<math.h>//由於用到ceil,所以我們要用到這個頭文件 3 int main() 4 { 5 double h,r;//定義兩個浮點型變量h,r 6 scanf("%lf%lf",&h,&r);//讀入h,r 7 printf("%d",(int)ceil(20/(h*r*r*3.14159/1000)));//輸出20/(Pi*r*r*h/1000)向上取整 8 return 0; 9 }
弱弱地說一句,本蒟蒻碼字也不容易,轉載請注明出處http://www.cnblogs.com/Maki-Nishikino/p/5970819.html