這題目一看,很多小伙伴可能覺這玩意肯定一遍過,然而,我當(dāng)時也是這么想的,但現(xiàn)實是,磨了幾天才寫出來。這次我們選擇先分析題:
首先我們來思考,我們要輸入兩個整數(shù)但求的卻是小數(shù),要怎么處理呢?
有兩種方法:
1.我們可以在a/b的時候在a面前乘以1.0來使a變成小數(shù)(因為在c語言中,‘/’號有這樣的法則,整數(shù)除整數(shù)等于整數(shù),且是屬于去尾的那種,而只要除號兩端任意一端有小數(shù),都可以為小數(shù)。)所以我們可以寫這樣的代碼:
#includeint main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("%.10f\n",1.0*a/b);
}
return 0;
}
嗯,這里有幾點注意的:首先是輸入,在scanf中你是怎樣輸入的,就要用怎樣的格式:比如我輸入a b中間隔了一個空格,那么在scanf的引號里也要是%d %d的格式,而如果我們?nèi)绻斎氲氖前,b那么輸出也要變%d,%d。這是要注意的,還有一個就是多組輸入,一般我們就是用上面這個方法,可以學(xué)一下,具體的理論我也不太清楚。
這里有一點特別要注意的:養(yǎng)成經(jīng)常打換行符的好習(xí)慣,我這么久都過不了就是因為沒打換行符,也就是'\n',除非題目格式特殊要求,不然一般都是要打換行符的。
好,繼續(xù)介紹第二種方法。強(qiáng)制轉(zhuǎn)化。我們可以在a或者b的前面加一個括號里面寫上double。也可以過,如:
#includeint main()
{
int a,b;
while(scanf("%d %d",&a,&b)!=EOF)
{
printf("%.10f\n",(double)a/b);
}
return 0;
}
這也是可以的,當(dāng)然,同樣的你也可以在b前面加也可以,但是不可以這樣(double)(a/b)這樣是錯誤的,因為它這樣的話就會讓a/b先計算出去小數(shù)尾的整數(shù);再加小數(shù)點。同樣這樣也是錯的。(這里提一嘴,%f這里變?yōu)?.10f的意思是保留十位小數(shù)).
拓展一個小知識:這里為什么不用float類型呢?那是因為錯了,到底為什么錯了呢?重點來了:因為float為單精度浮點類型y十進(jìn)制的有效位數(shù)為7位,double雙精度類型的十進(jìn)制的有效位數(shù)為16位,這就說明白了剛剛為什么float不行。
最后想在激勵一下自己:
林清玄:"人也要像珍珠貝一樣,養(yǎng)成重塑傷口的本事。轉(zhuǎn)化成生命的創(chuàng)傷,使它變成美麗的珍珠。”愿每一個受過傷的孩子都能堅強(qiáng)的重新站起來,去努力追尋心中的光·。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章名稱:我的刷題之旅1-創(chuàng)新互聯(lián)
URL地址:http://jinyejixie.com/article20/dsigjo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、動態(tài)網(wǎng)站、手機(jī)網(wǎng)站建設(shè)、服務(wù)器托管、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容