2016-03-30 29 views
0

嗨,大家好,這是我的第一個問題,所以我希望得到一些幫助。 基本上輸出是錯誤的,雖然計算是正確的! 每當我添加超過7個變量'總'輸出受損 7和更少的變量輸出給出正確的答案??! 這是我的編碼,我需要你的幫助Guyz我的輸出答案有什麼問題?

#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); 
} 
+2

與您的問題無關,但不是使用大的'if ... else if ...'鏈,而是使用'switch'語句來查看。 –

+1

@JoachimPileborg:或者爲了便於我們理解和可讀性,將'ch'映射到這些常量('total + = val_map [ch-1] * q'等等) –

+0

:1)單獨的代碼塊對於,如果,其他,同時,做...時,切換,大小寫,默認)通過一個空行。 2)遵循以下公理:*每行只有一條語句,並且(至多)每條語句有一個變量聲明。* 3)使用有意義的變量名稱。變量名稱應指示內容或用法(或兩者都更好)。 – user3629249

回答

3

的問題是,你不初始化所有的變量,這意味着它們的值將是不確定的你將有未定義行爲

如果你初始化所有這些變量爲零,它應該工作。

您得到錯誤值的原因是因爲上述原因,您只在程序中設置了一個變量,將它添加到所有未初始化的變量中。所以在實踐中發生的情況是,您將大量看似隨機的值添加到單個計算值並將其打印爲輸出。

+0

它的工作非常感謝你兄弟:) – Adel

0

你沒有初始化你的值,這是編碼espicialy當你在求和中使用它的一種克累的習慣。例如:

int = x,y; //你沒有初始化所以x和y有一個隨機數 int sum = x + y; //會給你一個錯誤的答案,因爲如果你不告訴他這樣做,編譯器不會給它們零。


int = x = 5,y = 0; int sum = x + y; //導致5。

0

非初始化變量將返回分配的內存位置中的任何內容,這將是一個垃圾。 你必須初始化所有使用的變量。 請考慮下面的代碼。

int a,b; 
a=5; 
printf("\na= %d b= %d",a,b); 

保證a會返回5但沒有人知道b會返回什麼。 ,因爲你不知道什麼存儲在爲變量b保留的內存上。

相關問題