質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

4083閲覧

C言語 銀行口座への入金と出金のプログラム。

Masaki21

総合スコア14

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/04/05 06:26

Dは入金、Cは出金としています。
現在、FOR文を使い、4回繰り返ししています。
まず最初に1000プラスしたとして、次にもう一度1000プラスしたいのですが、入力しても記憶されていないため、再び表示されるのは1000になってしまいます。
この問題と、D,C以外を入力された場合、Please enter C or D: から再開にしたいです。
今回 IF 文を使用しました。間違っていたら他の文でやり直します。
よろしくお願いします。

#include <stdio.h> FILE * fp; int chacking(void); int main(void) { printf("Welcome to Ron's Checking Account Tracer Progtam\n"); printf("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\n"); int i; fp = fopen("csis.txt","w"); for (i =1; i <= 4; ++i) chacking(); fclose(fp); return 0; } int chacking(void) { double amount = 0, balance = 0; char value; int i; for(i = 0; i < 4; i++) { printf("Please enter C or D: "); scanf("%c",&value); if(value == 'D' || value == 'd') { printf("How much money do you want to deposit?: "); scanf("%lf",&amount); balance = balance + amount; printf("The transaction is a: %c and the amount is: %.2lf\n",value,amount); printf("The balance is: %.2lf\n",amount); } else if(value == 'C' || value == 'C') { printf("How much money do you want to withdraw?: "); scanf("%lf",&amount); balance = balance - amount; printf("The transaction is a: %c and the amount is: %.2lf\n",value,amount); printf("The balance is: %.2lf\n",amount); } } return 0; }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2018/04/05 06:33

"csis.txt"というファイルは何のために開いたのですか?本来であれば、このファイルに残高とか入出金操作を記録するのではないですか?
Masaki21

2018/04/05 06:35

あ、こちらはファイルを作成し、書き込みするためのものです。説明不足ですみません。
guest

回答1

0

ベストアンサー

ざっと見た感じでおかしそうなところを指摘しておきます。

  • ループがmainで4回、chacking関数内でも4回、計16回行われる
  • balance出力箇所で、出力しているのはamount
  • 文字Cまたはcの判定で、どちらも大文字のCになっている
  • main関数で意味のないファイルオープンクローズ(これから使うのでしょうか)

上記以外でおそらくscanfで1文字入力したときのC言語特有の問題が発生していると思います。
似たような質問がつい最近ありましたのでリンクしておきます。参考にしてください。
https://teratail.com/questions/119453

投稿2018/04/05 06:36

ttyp03

総合スコア16998

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masaki21

2018/04/05 06:48

有難うございます。ご指摘頂いた箇所を修正し、教えて頂いたリンクを参照しましたところ、解決いたしました。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問