質問です
Posted: 2012年7月19日(木) 17:31
初めまして。C言語超初心者です。
質問なんですが、定価と個数を入力すると価格、税込価格、お釣り、2割り引きの値段を表示して、税込価格が105000円を超えると
「金額が大き過ぎます。
再入力して下さい。」
と表示して再入力させるプログラムを練習で作ってみたのですが実行すると意味不明な数値が出てきてしまいます。
以下コード
質問なんですが、定価と個数を入力すると価格、税込価格、お釣り、2割り引きの値段を表示して、税込価格が105000円を超えると
「金額が大き過ぎます。
再入力して下さい。」
と表示して再入力させるプログラムを練習で作ってみたのですが実行すると意味不明な数値が出てきてしまいます。
以下コード
#include <stdio.h>
int main(void){
int x,y,z,s,a,m; /* xは定価を定義、yは個数を定義、zはxとyの積を定義、sは消費税計算を定義、aは2割引の金額を定義、mは金額1000を定義 */
do {
printf ("定価を入力して下さい:"); scanf ("%d",&x);
printf ("個数を入力して下さい:"); scanf ("%d",&y);
z = x*y;
s = (z*105)/100;
a = s*0.8;
m = 1000;
if (s > 105000){
printf ("金額が大き過ぎるため再入力をお願いします。\n※合計値を105000以内にして下さい。\n"); /* 税込価格が105001円以上の場合表示 */
}
} while (s > 105000); /* 税込価格が105001円以上の場合、6行目do~20行目while(s > 105000);まで繰り返す */
/* 税込価格が105000円以内の場合、税込価格に応じて下記のプログラムを実行する。 */
if (s <= 1000) {
printf ("価格は%d円で、税込み価格は%dです。\nまた、千円を出した場合のお釣りは%d円で、2割引の値段は%d円です。",z,s,m-s,a);
} else {
if (s > 1000 && s <10000) {
printf ("価格は%d円で、税込み価格は%dです。\nまた、一万円を出した場合のお釣りは%d円で、2割引の値段は%d円です。",z,s,(m*10)-s,a);
} else {
if (s >= 10000 && s <= 105000) {
printf ("価格は%d円で、税込み価格は%dです。\nまた、10万円を出した場合のお釣りは%d円で、2割引の値段は%d円です。",z,s,(m*100)-s,a);
}
}
}
return 0;
}
(/code]
価格と個数をどちらも12345にすると意味不明な数字が出てきます。
他の計算や123456×123456や12345×123456だと正常に動作するのに何故こうなるのでしょうか?
あと税込価格が100兆円を超えてもなります。(intを使ってるからですか?)
もしよろしければ原因を教えてください。
貴重なスペースを使ってしまって申し訳ありません。