こんにちは、これは私の最初の質問ですので、私はいくつかの助けを得ることを望んでいます。 計算は正しいですが、基本的に出力は間違っています! 「合計」に7つ以上の変数を追加するたびに、出力が破損します。 7以下の変数は正しい答えを出力します。 これは私、私はあなたの助けまいら出力回答で何が間違っていますか?
#include <stdio.h>
void main()
{
float total = 0, necklace, scarf, cotton, Lace, Hijab, h, m, l, z;
int ch, q;
printf("\nFashion : \n1.Fashion Necklace <Price=RM29>\n2.Scarf <Price=RM25>\n3.Cotton T-shirts <Price=RM35>\n4.Lace Blazer <price=RM33>\n5.Set of 2 Hijab <price=RM35>\n6.Fleece-Lined Hoodie <price=RM49>");
printf("\nEnter Your Choice : ");
scanf("%d", &ch);
if (ch < 10)
{
printf("\nEnter Quantity : ");
scanf("%d", &q);
if (ch == 1)
{
necklace = 29 * q;
}
else if(ch == 2)
{
scarf = q * 25;
}
else if(ch == 3)
{
cotton = 35 * q;
}
else if(ch == 4)
{
Lace = 33 * q;
}
else if(ch == 5)
{
Hijab = 35 * q;
}
else if(ch == 6)
{
h = 49 * q;
}
else if(ch == 7)
{
m = 20 * q;
}
else if(ch == 8)
{
l = 40 * q;
}
else if(ch == 9)
{
z = 15 * q;
}
}
else
{
printf("\nInvalid Choice!!!");
}
total = (scarf + necklace + cotton + Lace + Hijab + h + m + l + z);
printf("\nTotal = RM%.2f", total);
}
あなたの問題とは無関係ですが、大きな 'if ... else if ...'チェーンを使用する代わりに、 'switch'ステートメントの使用を検討することをお勧めします。 –
@JoachimPileborg:または、それらの定数( 'total + = val_map [ch-1] * q'など)に' ch 'をマップする配列 –
わかりやすさとわかりやすさのために私たち人間:1)別々のコードブロックfor、if、else、while、do ... while、switch、case、default)を空白行で指定します。 2)公理に従う:* 1行につき1つの文と、文ごとに1つのみの変数宣言。* 3)意味のある変数名を使用する。変数名は内容や使用法を示す必要があります(またはそれ以上のもの)。 – user3629249