• ベストアンサー

C言語超初級

はじめまして。 自分は大学入ってからC言語を勉強しています。 授業で課題が出ているのですが難しくてどうすればいいかわかりません。 プロの皆さんには楽勝だと思いますがよろしくおねがいします。 内容 いろいろ計算して出てきた商品価格(例えば1234567円)に位取りのカンマを挿入して表示する関数(int型の最大桁数である10桁の数値まで表示できるようにすること)を作成する。 1234567→1,234,567 見たいな感じです。 自分でも考えたいのでよろしかったら考え方みたいなのをヒントください。 ちなみにこの一ヶ月でならったことは int,float,char,if,for,swhitch,while,scanf,printf,簡単な関数の作り方くらいです。数少ない武器ですがこれらの道具でお願いします。 胸を貸してください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.11

問題のint型数値がnumberに置数されているものとします。 まず、3桁ごとにx1,x2,x3,x4に分類しましょう。 1)numberを1000000000で割った商をx1に、余りをnumberに格納します。 2)numberを1000000で割った商をx2に、余りをnumberに格納します。 3)numberを1000で割った商をx3に、余りをx4に格納します。 このx1,x2,x3,x4を印刷すればいいのですが、numberに意地のわるい 数字(1とか0)が入っていると困るので、場合分けしましょう。 1)x1,x2,x3が共にゼロのとき   x4を印刷して終了。   この書式は"%d\n"です。 2)x1,x2が共にゼロのとき   x3,x4を印刷して終了。   この書式は"%d,%d\n"です。 3)x1がゼロのとき   x2,x3,x4を印刷して終了。   この書式は"%d,%d,%d\n"です。 4)その他のとき   x1,x2,x3,x4を印刷して終了。   この書式は"%d,%d,%d,%d\n"です。 ね、初心者らしい解き方でしょ!?

kiki28
質問者

お礼

ありがとうございます。 この方法は自分も考え付きました。 ただ最初の値がfloat型だったのであまりを出せませんでした。 でもこねくりまわしたら結果的に表示はできました。 komaさんにはnumberを中継することで定義する関数を減らすことを学びました。ありがとうございます。

その他の回答 (11)

回答No.1

整数の変数で、1000で割った商を利用すればいいんじゃないでしょうか。 1000で割って、1000以上ならもう1回割る・・・という操作を繰り返して。

kiki28
質問者

補足

?わかんないよ・・・ 自分的には計算はint型でするもんだと思ってます。 計算し終わった後にchar型に変えたらfor文とか使ったら3つごとに「、」をいれてどうにかなりそう? みたいに持てる知識を総動員して考えましたがintからcharに変換できない!となりました。 根本的に間違ってるんですか?

関連するQ&A