C言語

【C言語】支払いに必要なお札、硬貨の組み合わせを求める

プログラミング初心者向けの練習問題の一つとして、任意の金額に対する支払いに必要なお札、硬貨の組み合わせを求めるプログラムの作成があります。

本記事では、前述のプログラムの作成方法について解説しています。

実際にプログラムを作成してみる

それでは、入力された金額に対する支払いに必要なお札、硬貨の組み合わせを求めるプログラムを作成してみます。

プログラム作成の手順

プログラム作成の手順は以下の通りです。

  1. ユーザに任意の金額を入力させ、その値をint型の変数amountに格納
  2. 以下の流れを全部のお札、硬貨に対して行う
    -> amountの値を特定のお札、又は硬貨の値で割り、その商を表示
    -> amountの値を「amount÷お札、又は硬貨の値」の余りで更新

実装例

上記の手順に従ってプログラムを作成します。使用する言語はC言語です。

#include <stdio.h>

int main(void){

  int money[10] = {10000, 5000, 1000, 500, 100, 50, 10, 5, 1};
  int amount;

  printf("任意の金額を入力して下さい:");
  scanf("%d", &amount);

  for (int i=0; money[i]!='\0'; i++) {
    int result = amount / money[i];
    if (result!=0) {
      if (money[i]>=1000) {
        printf("->%5d円札は%d枚\n", money[i], result);
      } else {
        printf("->%5d円玉は%d枚\n", money[i], result);
      }
    }
    amount = amount % money[i];
  }
  return 0;
}

このプログラムを実行すると以下の出力結果が得られます。

任意の金額を入力して下さい:50505
->10000円札は5枚
->  500円玉は1枚
->    5円玉は1枚
任意の金額を入力して下さい:16666
->10000円札は1枚
-> 5000円札は1枚
-> 1000円札は1枚
->  500円玉は1枚
->  100円玉は1枚
->   50円玉は1枚
->   10円玉は1枚
->    5円玉は1枚
->    1円玉は1枚