生活随笔
收集整理的這篇文章主要介紹了
使用C语言编写一个算数的除法运算(保留n位小数)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
問(wèn)題描述
分?jǐn)?shù)化小數(shù)(decimal)
輸入正整數(shù)a,b,c,輸出a/b的小數(shù)形式,精確到小數(shù)點(diǎn)后c位。a,b≤106 ,c≤100。輸入包含多組數(shù)據(jù),結(jié)束標(biāo)記為a=b=c=0。
#include<stdio.h>
void question(int a
,int b
,int c
)
{int i
;printf("%d.", a
/ b
);for (i
= 1; i
<= c
; i
++) {a
%= b
; a
*= 10; if (i
== c
&& ((a
% b
) * 10 / b
>= 5)) printf("%d", a
/ b
+ 1);elseprintf("%d", a
/ b
);}printf("\n");
}
void questionPlus(int a
,int b
,int c
)
{int i
, j
, integer
, demical
;demical
= 1;integer
= a
/ b
;for (i
= 1; i
<= c
; i
++){a
%= b
;a
*= 10;if (i
== c
&& ((a
% b
) * 10 / b
>= 5)) demical
= demical
* 10 + a
/ b
+ 1;else if(i
==1)demical
= demical
+ a
/ b
;elsedemical
= demical
*10 + a
/ b
;}for (j
= 1, i
=1; i
< c
; i
++) j
*= 10;if ((demical
- j
) / (j
* 10) != 0){integer
++;demical
-= j
* 10;}printf("%d.", integer
);for (i
= 1; i
<= c
; i
++){if (i
== 1) printf("%d", demical
/ j
- 1);else{demical
%= j
;j
/= 10;printf("%d", demical
/ j
);}}printf("\n");
}
void questionPlusPlus(int a
,int b
,int c
)
{int i
, j
, integer
, demical
[c
];integer
= a
/ b
;for (i
= 1; i
<= c
; i
++){a
%= b
;a
*= 10;if (i
== c
&& ((a
% b
) * 10 / b
>= 5)) demical
[i
-1] = a
/ b
+ 1;elsedemical
[i
-1] = a
/ b
;}for(i
=c
-1;i
>=0;i
--){if(demical
[i
]==10){if(i
==0) integer
++;else demical
[i
-1]++;demical
[i
]=0;}}printf("%d.", integer
);for (i
= 0; i
< c
; i
++)printf("%d", demical
[i
]);printf("\n");
}
int main(void)
{int a
, b
, c
;while ((printf("請(qǐng)輸入三個(gè)數(shù):"))&&scanf("%d%d%d", &a
, &b
, &c
) == 3 && !(a
== b
&& b
== c
&& c
== 0)){printf("------第一個(gè)函數(shù)------\n");question(a
,b
,c
);printf("------第二個(gè)函數(shù)------\n");questionPlus(a
,b
,c
);printf("------第三個(gè)函數(shù)------\n");questionPlus(a
,b
,c
);}
}
進(jìn)行函數(shù)輸出:
可以發(fā)現(xiàn)進(jìn)行輸入19999 20000 3 的時(shí)候,輸出的結(jié)果出現(xiàn)不一致的問(wèn)題,而第二個(gè)和第三個(gè)函數(shù)是正確的輸入形式。
但是,對(duì)于現(xiàn)在來(lái)說(shuō),因?yàn)槟芰τ邢?#xff0c;不能進(jìn)行相應(yīng)的優(yōu)化,第三種函數(shù)為最簡(jiǎn)單的一種函數(shù)了。
總結(jié)
以上是生活随笔為你收集整理的使用C语言编写一个算数的除法运算(保留n位小数)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。