題目要求是:輸入3個(gè)值:梯形的上底、下底和高,計(jì)算并輸出該梯形的面積。保留小數(shù)6位,第7位四舍五入;我的代碼是:#include<stdio.h>int main(void){?????float a,b,h,s;?????scanf("%f %f %f",&a,&b,&h);?????s=(a+b)*h/2;?????s=((int)(100000.0*s+0.5)/100000.0);?????printf("%.6f\n",s);?????return 0;}交上去了一直是wrong answer,保留6位小數(shù)第七行好像是乘1000000.0,但是在自己的編譯器上只有乘100000.0第七位才四舍五入了,這個(gè)也不知道為什么。剛開始學(xué),謝謝大家的指點(diǎn)
3 回答
已采納

心有猛虎_細(xì)嗅薔薇
TA貢獻(xiàn)119條經(jīng)驗(yàn) 獲得超250個(gè)贊
(%f 在不指定位數(shù)時(shí),默認(rèn)保留6位小數(shù).)
建議使用pow()函數(shù)求次數(shù)方,包含<math.h>頭文件。
s=?(float)?(?(int)?(?pow(10,n)?*s?+?0.5))?/?pow(10,n);?//n代表浮點(diǎn)數(shù)四舍五入到小數(shù)的第n位
完整代碼如下:
#include<stdio.h> #include<math.h>? int?main() { ?????float?a,b,h,s; ?????int?n=6;????????//n也可以由scanf存入(這兒為了方便直接保留6位) ?????printf("Please?input?a,b,h:"); ?????scanf("%f?%f?%f",&a,&b,&h); ?????s=(a+b)*h/2; ?????s=?(float)?(?(int)?(?pow(10,n)?*s?+?0.5))?/?pow(10,n); ?????printf("%.6f\n",s); ?????return?0; }
希望能幫助到你^_^

藏天慕道
TA貢獻(xiàn)3條經(jīng)驗(yàn) 獲得超16個(gè)贊
我可以幫你解讀一下你的關(guān)鍵語(yǔ)句,s=(int)(100000.0*s+0.5)/100000.0;
假設(shè)s=2.345678
100000.0*s=234567.8
(100000.0*s+0.5)=234568.3
(int)(100000.0*s+0.5)=234568
(int)(100000.0*s+0.5)/100000.0=2.34568
注:加減乘除運(yùn)算中有一個(gè)數(shù)是float或double型,系統(tǒng)將數(shù)據(jù)全部轉(zhuǎn)化成double型在進(jìn)行運(yùn)算。
希望能幫到你。
- 3 回答
- 0 關(guān)注
- 1586 瀏覽
添加回答
舉報(bào)
0/150
提交
取消