C語言:發工資
注意
- 不論什麼語言,它的資料在機器中都是以二進位制儲存和運算的,但是二進位制並不能完全精確表示所有十進位制小數。就像三進位制的0.1用十進位制表示是0.33333…無限迴圈小數。所以就有書上說的浮點數只能保證有限位的精確。
- 浮點運算儘量轉換成整數,再進行運算,不然會出現誤差性錯誤
void main() {
double m[5] = {786.98,1038.76,1053.72,1234.98,1653.33};
int a,i,b_int;
float b;
//將整數與小數分隔開,進行運算
for(i=0; i<5; i++) {
// 由於小數運算出現問題,一般把小數,整數分離開,再把小數換成整數進行運算
a = m[i];
b = (m[i] -a);
b_int = b*100;
printf("金額%.2lf需要:",a+b);
money_num(a,b_int);
}
}
上面這種換算,存在問題,而且麻煩,需要雙精度的m,單精度的b才好使
可以按照下面方法進行分割小數和整數
void main(){
double money[n]={786.98,1038.76,1053.72,1234.98,1653.33};
int i,data_1,data_2;
for(i=0;i<n;i++){
// 使用data_1接收整數部分
data_1=money[i];
// 將整體乘以100,變為整數,然後減去整數部分乘以100,既得小數部分
data_2=money[i]*100-data_1*100;
printf("%d,%d\n",data_1,data_2);
}
}
1. 題目
輸入幾名職工工資金額,統計最少須領多少個100元,50元,20元,10元,5元,2元,1元,5角,2角,1角,5分,2分,1分才能實現順利發放?
假設職工數n=5,工資分別為:786.98,1038.76,1053.72,1234.98,1653.33
2. 程式碼
#include "stdio.h"
void money_num(int a,int b) {
int i,n,j;
// 儲存錢幣的種類
float money[13] = {100,50,20,10,5,2,1,0.5,0.2,0.1,0.05,0.02,0.01};
// 將小數均轉換成整數單獨存放
int money_int[6] = {50,20,10,5,2,1};
// num陣列,用來記錄每種錢幣的個數,初始都為0
int num[13]={0};
//由於需要最少的錢幣個數,所以最大的越多越好,因此從大到小,依次選擇直到錢數為工資總額
// 先進行整數運算
for(i=0; i<7; i++) {
n=0;
// n代表當前選擇的錢幣張數
while(a>=money[i]) {
a = a-money[i];
n++;
}
num[i] = n;
}
// 再進行小數運算
for(j=0; j<6; j++) {
n=0;
// n代表當前選擇的錢幣張數
while(b>=money_int[j]) {
b = b-money_int[j];
n++;
}
num[i++] = n;
}
for(i=0; i<13; i++) {
if(num[i]!=0)
printf("%d張%.2f ",num[i],money[i]);
}
printf("\n\n");
}
void main() {
double m[5] = {786.98,1038.76,1053.72,1234.98,1653.33};
int i,data1,data2,temp;
for(i=0; i<5; i++) {
data1= m[i];
data2=m[i]*100-data1*100;
printf("金額%.2lf需要:",m[i]);
money_num(data1,data2);
}
}
相關文章
- 題解1197:發工資咯 (C語言描述)C語言
- C語言職工工資管理系統C語言
- C語言開發工具C語言
- java開發C語言編譯器:為C語言提供API呼叫JavaC語言編譯API
- C語言 C語言野指標C語言指標
- C語言---“C語言 誰與爭鋒?”C語言
- 資料結構 課程設計 員工管理系統(C語言)資料結構C語言
- C語言學習記錄LeetCode——去掉最低工資和最高工資後的平均工資(排序)C語言LeetCode排序
- C語言資料型別C語言資料型別
- C語言C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C語言練習——資料加密C語言加密
- C語言期末複習資料C語言
- C語言(基本資料型別)C語言資料型別
- 《C語言開發從入門到精通》一第1章C語言之定位1.1 C語言的誕生C語言
- 廣東工業大學 C語言課程設計報告C語言
- C語言字串C語言字串
- C語言: returnC語言
- C語言(一)C語言
- C語言概述C語言
- c語言 %pC語言
- 字串(C語言)字串C語言
- C語言程式C語言
- CUDA C語言C語言
- C語言的本質(32)——C語言與彙編之C語言內聯彙編C語言
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- C語言函式手冊:c語言庫函式大全|C語言標準函式庫|c語言常用函式查詢C語言函式
- Rust語言開發資源Rust
- C語言 列舉資料型別C語言資料型別
- c語言的基本資料型別C語言資料型別
- C語言學習資料(轉載)C語言
- C語言與嵌入式C語言的區別C語言
- C語言學習方法,怎麼學習C語言?C語言
- 深入體驗C語言專案開發C語言
- 發現C語言遞迴深度有限制C語言遞迴
- go語言與c語言的相互呼叫GoC語言
- C語言教程——03 C語言結構C語言
- C語言魔塔遊戲C語言遊戲