我的输出答案有什么问题?

时间:2016-03-30 15:05:13

标签: c helper

大家好,这是我的第一个问题,所以我希望得到一些帮助。 基本上输出是错误的,虽然计算是正确的! 每当我向'total'添加超过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);
}

3 个答案:

答案 0 :(得分:3)

问题是你没有初始化所有这些变量,这意味着它们的值将是不确定,你将有未定义的行为

如果将所有这些变量初始化为零,它应该可以工作。

您得到错误值的原因是由于上述,您只在程序中设置了一个变量,将其添加到所有未初始化的变量中。所以在实践中发生的事情是你将大量看似随机的值添加到单个计算值中并将其打印为输出。

答案 1 :(得分:0)

你没有初始化你的价值观,当你在求和中使用它时,这是一种粗略的编码习惯。例如:

int = x,y; //你没有初始化,所以x和y有一个随机数 int sum = x + y; //会给你一个错误的答案,因为编译器没有告诉他这样做就不给它们零。

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

答案 2 :(得分:0)

非初始化变量将返回分配的内存位置中的任何内容,它将是垃圾。 你必须初始化所有使用的变量。 请考虑以下代码。

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

保证a将返回5,但没有人知道b将返回什么。 因为你不知道存储在为变量b保留的内存中的内容。