アプリ版:「スタンプのみでお礼する」機能のリリースについて

金額kinを入力し、札の枚数をカウントして、実行結果のように表示するプログラムを作成せよ。
なお、1万円札、5千円札、千円札の枚数の変数名はそれぞれ、man、go、senである。
実行結果
金額を入力してください:89000
1万円札:8枚
5千円札:1枚
千円札:4枚
#include <stdio.h>
int main(void)
{
int kin,man,go,sen;
printf("金額を入力してください:");
scanf("%d"&kin);
man=kin/10000;
go=kin/5000;
sen=kin/1000;
printf("1万円札:%d枚\n5千円札:%d枚\n千円札:%d枚\n",man,go,sen);
return(0);
}
このような感じで作成してみたのですが、うまく作動しません。
ちなみにこの課題は空欄を埋めるものです。

質問者からの補足コメント

  • なるほど、、
    sen=kin/1000に関してですが、man、goと同様にkin%=1000とする必要はないのですか?

    No.2の回答に寄せられた補足コメントです。 補足日時:2020/10/20 15:12

A 回答 (4件)

そりゃ無理。


実際に数字を入れて計算過程を確認してみよう。

 man=89000÷10000
 go=89000÷5000
 sen=89000÷1000
 
って計算してるよね。おかしいだろ?
どんな計算をすれば良いのかを、ここで考えるんだ。
それが出来ていないのです。

質問者さんは計算式だけを教えて欲しいと思っていらっしゃるようですが、
それではプログラムを作ることはできません。
原因が分かれば自分で修正できるようになります。
がんばれ。

自分で作れなければ、
 「分かりません」 
と答えるのもアリだ。
    • good
    • 0

> sen=kin/1000に関してですが、man、goと同様にkin%=1000とする必要はないのですか?



「必要と思えば」やれば良いです。
ただし、提示された問題に関して言うと、「札束」だけが問題であって、現実世界でそれ以下に存在してる「筈」の硬貨に関しては何も書かれていません。
つまり、言外に、入力は札束だけで表現出来る金額だけにせよ、って言ってるのと同じなんですよ。

こういうのを「仕様(Specification)」と言います。貴方が親切に

「硬貨も考えないと・・・!」

と考えるのは自由なんですが、一応プログラミングの、ある種「マナー」としては

「わざわざ仕様外の事柄は好き好んで実装しない」

んです。つまり、この問題の場合、500円硬貨を入力されてもそれに対しては何もせんで構わないわけです。
これをバグと考えるかどうか、ってのは人に依りますが、言い換えると、この問題の指示自体に「硬貨を考えない」と言うバグが存在する、って事ですね。
    • good
    • 0

#include <stdio.h>



int main(void)
{
 int kin, man, go, sen;
 printf("金額を入力してください:");
 scanf("%d", &kin);
 man = kin/10000;
 kin %= 10000; /* 剰余演算子を使って kin を定義しなおす */
 go = kin/5000;
 kin %= 5000; /* 剰余演算子を使って kin を定義しなおす */
 sen = kin/1000;
 printf("1万円札:%d枚\n5千円札:%d枚\n千円札:%d枚\n", man, go, sen);
 return (0);
}
この回答への補足あり
    • good
    • 0

#include <stdio.h>



int main(void)
{
 int kin, man, go, sen;
 printf("金額を入力してください:");
 scanf("%d", &kin);
 man = kin/10000;
 kin %= 10000; /* 剰余演算子を使って kin を定義しなおす */
 go = kin/5000;
 kin %= 5000; /* 剰余演算子を使って kin を定義しなおす */
 sen = kin/1000;
 printf("1万円札:%d枚\n5千円札:%d枚\n千円札:%d枚\n", man, go, sen);
 return (0);
}
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!