【问题标题】:C: If statement not workingC:如果语句不起作用
【发布时间】:2013-02-15 22:17:11
【问题描述】:
if (num2 != 0)
    printf("\nInput 3 / Input 2 (int)    %12d", divide);
else if (num2 == 0)
    printf("\nInput 3 / Input 2 (int)    DIV/0");


if (flt4 != 0)
    printf("\nInput 2 / Input 1 (double) %16.3f", divide2);
else if (flt4 == 0)
    printf("\nInput 2 / Input 1 (double)    DIV/0");

当我将 num2 或 flt4 设置为 0 时,程序崩溃。否则它工作得很好。我正在查看有关 if/else 语句的阅读内容,我相信我的格式是正确的,但显然有一个错误。

谢谢。

编辑:

我定义除法的代码是:

void calculate (int num1, int num2, int num3, float flt4,int* sum,int* mult,
            int* mod,int* divide,double* mult2,double* divide2)
{

*sum = num1 + flt4;
*mult = num1 * num3;
*mod = (num1/10)%10;
*divide= num3 / num2;
*mult2= num1 * flt4;
*divide2= (double)num2 / num1;
return;
}

然后我的问题是,我如何构建这个程序,如果它除以零,我可以在打印函数中显示它。

【问题讨论】:

  • 您的代码没有问题。它必须在与您粘贴的不同的地方崩溃。顺便说一句 - 你不需要在 'else' 之后指定另一个 'if' 因为它已经被前面的 if 暗示了。
  • 鉴于 divide 是一个变量而不是一个就地调用的函数,我想说你总是执行除法,而且只有在完成之后(并将结果存储在divide 变量中)您检查分母是否非零。当然,如果它是(将是)零,那么你的程序已经崩溃了。
  • 显示你定义divide的代码。它看起来像divide = something / num2 吗?如果是这样,那么你除以 0,这是无效的。

标签: c if-statement divide-by-zero


【解决方案1】:

你很可能被零除。 divide 变量设置在 'if' 之前,无论如何您都执行该操作。把它放在第一个'if'中,这样它就会除以num2 iff num2 不是零。

编辑: 它应该是这样的:

if (num2 != 0) {
    divide = something / num2;
    printf("\nInput 3 / Input 2 (int)    %12d", divide);
}

【讨论】:

  • 我会这样做,但老师指定我必须在单独的计算函数中进行所有计算。那么唯一的解决方案是在计算函数中创建另一个变量,它是否等于零?
  • 所以在检查值是否正确后使用calculate 函数。你不应该在检查变量之前执行*divide= num3 / num2;
猜你喜欢
  • 1970-01-01
  • 2012-12-26
  • 2013-06-20
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多