1. 程式人生 > >演算法:從鍵盤輸入一定金額(以元為單位,如345.78),然後顯示支付該金額的各人民幣數量

演算法:從鍵盤輸入一定金額(以元為單位,如345.78),然後顯示支付該金額的各人民幣數量

從鍵盤輸入一定金額(以元為單位,如345.78),然後顯示支付該金額的各人民幣數量,要求顯示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少(輸出面額最大值:比如 345.78 = 100×3 + 10×4 + 5×1 + 0.5×1 + 0.1×2 + 0.01×8)

#include "stdio.h"

//面額
double deno(int i)
{
    switch (i)
    {
    case 0:
        return 100;
    case 1:
        return 50;
    case 2:
        return 10;
    case
3: return 5; case 4: return 2; case 5: return 1; case 6: return 0.5; case 7: return 0.1; case 8: return 0.05; case 9: return 0.01; default: return 0; break; } } int main(void) { float money = 0; int
number[10] = { 0 }; printf("請輸入金額:"); scanf_s("%lf", &money); //有些數不能由二進位制數精確表示,所以儲存在計算機中會產生誤差,需要人工彌補誤差 money += 0.001; for (int i = 0; i <= 9; i++) { for (; money >= deno(i); number[i]++) money -= deno(i); } printf("需要:\n100元: %d 張\n50元: %d 張\n"
, number[0], number[1]); printf("10元: %d 張\n5元: %d 張\n", number[2], number[3]); printf("2元: %d 張\n1元: %d 張\n", number[4], number[5]); printf("0.5元: %d 張\n0.1元: %d 張\n", number[6], number[7]); printf("0.05元: %d 張\n0.01元: %d 張\n", number[8], number[9]); return 0; }

若是要求輸出所有面額方案,則可以通過外套一個迴圈實現
main()函式修改如下:

int main(void)
{
    double money = 0;
    int number[10] = { 0 };
    double cons = 0;

    printf("請輸入金額:");
    scanf_s("%lf", &money);

    //有些數不能由二進位制數精確表示
    money += 0.001;
    cons = money;

    for (int j = 0; j <= 9; j++)
    {
        money = cons;

        //初始化陣列中的元素
        for (int k = 0; k <=9; k++)
        {
            number[k] = { 0 };
        }

        for (int i = j; i <= 9; i++)
        {
            for (; money >= deno(i); number[i]++)
                money -= deno(i);
        }

        printf("方法%d:\n", j+1);
        printf("需要:\n100元: %d 張\n50元: %d 張\n", number[0], number[1]);
        printf("10元: %d 張\n5元: %d 張\n", number[2], number[3]);
        printf("2元: %d 張\n1元: %d 張\n", number[4], number[5]);
        printf("0.5元: %d 張\n0.1元: %d 張\n", number[6], number[7]);
        printf("0.05元: %d 張\n0.01元: %d 張\n", number[8], number[9]);
    }

    return 0;
}

相關推薦

演算法鍵盤輸入一定金額(單位345.78)然後顯示支付金額人民幣數量

從鍵盤輸入一定金額(以元為單位,如345.78),然後顯示支付該金額的各人民幣數量,要求顯示100元、50元、10元、5元、2元、1元、5角、1角、5分、1分各多少(輸出面額最大值:比如 345.78 = 100×3 + 10×4 + 5×1 + 0.5×1 +

C++鍵盤輸入一個整數判斷數是幾位數並且逆向輸出數字

#include using namespace std; int change(int n) //逆向輸出該數 {int rn; for(int i=0;i<10;i++) { if(n>0) { rn=rn*10+n%10; n=n/10;

編寫程式判斷鍵盤輸入的字元中數字的個數 大寫字母的個數小寫字母的個數其他字元的個數*作為字元輸出的標誌

#include <stdio.h> #include <string.h> int main() { char x[1000]; printf("請輸入字串:\n"); gets(x); int l=strlen(x); int a

彙編基礎練習題6鍵盤輸入數字字元利用程式得到對應的數值在利用2中的輸出子程式將得到的數值輸出。

彙編基礎練習題6: 從鍵盤輸入數字字元,利用程式得到對應的數值,在利用練習題2中的輸出子程式,將得到的數值輸出。 編譯工具:Masm for Windows 整合實驗環境2012.5 (附帶一個工具下載地址https://download.csdn.net/download/qq_3

C語言鍵盤輸入10個數存入一維陣列求這10個數中的最大值和最小值並輸出

題目:從鍵盤輸入10個數存入一維陣列,求這10個數中的最大值和最小值並輸出。 下面是我寫的程式,我用visual studio 2010編譯通過,執行正常。 源程式程式碼如下: #include "stdio.h" //從鍵盤輸入10個數存入一維陣列,求這10個數中的

初學java鍵盤輸入字串並統計其中數字字元的個數

import java.util.Scanner; public class Test {public static void main(String[] args) {String s=null;int count = 0;Scanner in=new Scanner(System.in);System.o

鍵盤輸入10個學生的成績並儲存在列表中求成績最高者的序號和成績

解決了最後一對無法輸出 解決了多個最大成績輸出錯位 縮減了不必要的程式碼 ls=[] j=[] k=[] for c in range(11): xh=int(input('')) fen=int(input('')) i=[]

如何讓Linux定時任務crond單位執行(每隔3秒)

需要用到Shell指令碼每隔3秒鐘去監控一個軟體程序的執行狀態,發現crond似乎只支援到分,不知道秒,怎麼辦呢? 第一種方法: 當然首先想到的是寫一個觸發的指令碼,在觸發指令碼中使用死迴圈來解決此問題,如下: cat kick.sh #!/bin/bash wh

java接受用戶鍵盤輸入的三個整數並輸出最大值和最小值

scan out sca system () 最小值 public tin 代碼 import java.util.Scanner 從鍵盤輸入要在開頭聲明這個。 Scnner in=new Scanner(Syetem.in); 聲明Scnner類型的in 如果要從鍵盤輸入

python 鍵盤輸入一個字串將小寫字母全部轉換成大寫字母,將字串列表的形式輸出(如果字串包含整數取整型)?

str1 = input("請輸入任意字串: ") list1= [] #儲存字串 list2= [] #儲存數字 for i in str1: if i.isdigit() == True: #判斷當前字元是否為字元 list2.append(int(i)) else:

# 鍵盤輸入一個正整數用2的冪次方的形式輸出。約定冪次方用括號來表示即表示2(b),b=1時冪省略。例如139=2^7+2^3+2^1+2^02(7)+2(3)+2+2(0)

樣例輸入: 402 樣例輸出: 2(8)+2(7)+2(4)+2 要求:冪不能重複,如:139=26+26+23+21+20(出現了2個6次方) 參考 C 程式碼: #include<stdio.h> #include<stdlib.h>

彙編基礎練習題7編寫輸入子程式功能是鍵盤輸入數字字元利用程式得到對應的數值並在主程式中驗證。

彙編基礎練習題7: 編寫輸入子程式,功能是從鍵盤輸入數字字元,利用程式得到對應的數值,並在主程式中驗證。 編譯工具:Masm for Windows 整合實驗環境2012.5 (附帶一個工具下載地址https://download.csdn.net/download/qq_36931

有五個學生每個學生有3門課的成績 從鍵盤輸入以上資料(包括姓名三門課成績) 輸入的格式:如:zhagnsan304060計算出總成績 並把學生的資訊和計算出的總分數高低順序存放在磁碟文

有五個學生,每個學生有3門課的成績, 從鍵盤輸入以上資料(包括姓名,三門課成績), 輸入的格式:如:zhagnsan,30,40,60計算出總成績, 並把學生的資訊和計算出的總分數高低順序存放在磁碟檔案"stud.txt"中。 1:定義一個描述學生的類2定義一個操作學生的工

鍵盤輸入一個表示式試編寫演算法計算表示式的值。

hanshu.h://運算子棧 #include <iostream> #include <string> using namespace std; #include "Status.h" typedef struct {char *base;char *top;int stacksi

小明去美國旅遊美國溫度華氏溫度計量她需要將華氏溫度轉換攝氏溫度編寫程式實現此功能. 要求 控制檯輸入華氏溫度資訊並且分別列印最後的華氏溫度和攝氏溫度的結果

public class Test_9 {/*小明去美國旅遊,美國溫度以華氏溫度計量,她需要將華氏溫度轉換為攝氏溫度,編寫程式實現此功能.要求:從控制檯輸入華氏溫度資訊,並且分別列印最後的華氏溫度和攝氏溫度的結果               攝氏溫度=5/9.0*(華氏溫度

鍵盤輸入某個十進位制小數或整數轉換成對應的二進位制小數並輸出。 (查詢十進位制小數轉換成二進位制小數的演算法使用迴圈來實現。 最多保留小數位後7位數字即可)演算法

/*演算法:把小數分成兩截,一截是整數,一截是小數。讓整數除以2取餘,倒敘輸出來 打印出二進位制(第一個數為個位,第二個數為10位,即乘以10,第三位數為百位, 即乘以100。。以此類推,即迴圈乘以10),直到除數 為0為止。小數乘以2,取整然後列印2進位制,直到小數部分

C++課後練習——鍵盤輸入一組非0整數輸入0標誌結束求這組整數的平均值 並統計其中正數和負數的個數。

從鍵盤輸入一組非0整數,以輸入0標誌結束,求這組整數的平均值, 並統計其中正數和負數的個數。 #include <iostream> using namespace std; void m

C++利用如下公式編寫函式計算∏的值直到最後一項的絕對值小於e,主程式接收鍵盤輸入的e輸出∏的值(保留5位小數)。 ∏/4 = 1-1/3+1/5-1/7...

利用如下公式,編寫函式計算∏的值,直到最後一項的絕對值小於e,主程式接收從鍵盤輸入的e,輸出∏的值(保留5位小數)。 ∏/4 = 1-1/3+1/5-1/7...#include <iostre

C語言有5個學生每個學生有3門課的成績鍵盤輸入學生資料計算平均成績

有5個學生,每個學生有3門課的成績,從鍵盤輸入學生資料(包括學生號、姓名、三門課成績),計算平均成績,將原有資料和計算出的平均分數存放在磁碟檔案“stud”中  對於平均成績的思路就是:把平均成績當做結構體的一項  在輸入3門課成績以獲得平均成績時,要注意在c語言中,三門成績