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語言學習記錄LeetCode——去掉最低工資和最高工資後的平均工資(排序)C語言LeetCode排序
- C語言資料型別C語言資料型別
- 資料結構 課程設計 員工管理系統(C語言)資料結構C語言
- C語言C語言
- 聊聊C語言/C++—程式和程式語言C語言C++
- C語言練習——資料加密C語言加密
- C語言期末複習資料C語言
- C語言 typedefC語言
- C語言(一)C語言
- C語言: returnC語言
- C語言字串C語言字串
- C語言與嵌入式C語言的區別C語言
- C語言學習方法,怎麼學習C語言?C語言
- 【開發語言】PHP、Java、C語言的編譯執行過程PHPJavaC語言編譯
- C語言 列舉資料型別C語言資料型別
- go語言與c語言的相互呼叫GoC語言
- 1901:The C programming language !(C語言)C語言
- C語言教師工資管理課設 求助C語言
- C語言教程——03 C語言結構C語言
- c語言作業C語言
- C語言 共用體C語言
- C語言 備份C語言
- C語言指標C語言指標
- c語言入門C語言
- Linux-C語言LinuxC語言
- c語言複習C語言
- C語言 - 字串拼接C語言字串
- C語言加強C語言
- C語言位操作C語言
- 初識C語言C語言
- c語言筆記C語言筆記
- C語言基礎C語言
- C語言陣列C語言陣列
- c語言_遞迴C語言遞迴
- C語言:extern用法C語言
- C語言版本迭代C語言
- C語言 截圖C語言