日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用C语言编写一个算数的除法运算(保留n位小数)

發布時間:2023/12/14 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用C语言编写一个算数的除法运算(保留n位小数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題描述

分數化小數(decimal)
輸入正整數a,b,c,輸出a/b的小數形式,精確到小數點后c位。a,b≤106 ,c≤100。輸入包含多組數據,結束標記為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++) //依次輸出小數點后c位的的數值{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;//demical初始化為1integer = 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的位數與demical的位數應相同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{//依次從第2位開始輸出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("請輸入三個數:"))&&scanf("%d%d%d", &a, &b, &c) == 3 && !(a == b && b == c && c == 0)){printf("------第一個函數------\n");question(a,b,c);printf("------第二個函數------\n");questionPlus(a,b,c);printf("------第三個函數------\n");questionPlus(a,b,c);} }

進行函數輸出:

可以發現進行輸入19999 20000 3 的時候,輸出的結果出現不一致的問題,而第二個和第三個函數是正確的輸入形式。
但是,對于現在來說,因為能力有限,不能進行相應的優化,第三種函數為最簡單的一種函數了。


總結

以上是生活随笔為你收集整理的使用C语言编写一个算数的除法运算(保留n位小数)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。