当条件未满足时输出循环/输出答案不正确

时间:2016-02-19 02:10:53

标签: c

2个问题。 1 - 当输入负数时,我正在努力弄清楚如何退出此循环。 2 - 我的代码部分,关于检查数字的数字之和是否正常工作,需要不同的等式来获得正确的输出,但无法弄清楚。代码的那一部分需要添加一个整数的数字,并输出总和是奇数还是偶数。

int main(void)

{
  int number, sum, i;
  int divisor, prime;

  do {
    printf("Enter an integer:");
    scanf("%d", &number);

    i = number;
    sum = 0;

    if (i % 7 == 0) {
      printf("Multiple of 7\n");
    } else if (i % 11 == 0) {
      printf("Multiple of 11\n");
    } else if (i % 13 == 0) {
      printf("Multiple of 13\n");
    }

    if (i % 2 == 0) {
      printf("Is sum of digits Odd? 1\n");
    } else {
      printf("Is sum of digits Odd? 0\n");
    }

    int check = 1;
    for (divisor = 2; divisor <= i / 2; ++divisor) {
      if (i % divisor == 0) {
        check = 0;
        break;
      }
    }
    if (check == 0) printf("Is number prime? 0\n");
    else printf("Is number prime? 1\n");

  } while (i > 0);

  return (0);
}

4 个答案:

答案 0 :(得分:1)

这应该有效:

...    
do {
    printf("Enter an integer:");
    scanf("%d", &number);

    if ( number < 0 ) 
        break ;
...

答案 1 :(得分:0)

在C中退出具有特定条件的循环的一种方法是使用BREAK

if( a < 0) {
         /* terminate the loop using break statement */
         break;
}

答案 2 :(得分:0)

输入负数后,您可以在输入后立即检查if条件,然后使用exit(0)。 喜欢

if(number < 0)
    exit(0);

所做的事情无效。因为你最后使用了while条件,模数函数可能不起作用(我不太确定,但我认为模数函数需要一个正整数作为参数)

您没有检查代码中数字的位数总和,但前提是数字本身是偶数还是奇数。 部分将是

while(i > 0)
{
    sum += i % 10;
    i /= 10;
}

那应该给你数字的总和,你可以检查它是奇数还是偶数

无论如何,当输入负数或甚至1时,素数部分将完全失败。

答案 3 :(得分:0)

如果您的意思是根本不想进入循环,则可以使用while循环而不是while循环。

然而,在进入循环之前你必须得到第一个输入,并且在循环的底部需要另一个输入。这可能不是你想要的。

您可能想要使用

if (number < 0) break;

在您阅读该值之后,这将是正确的。

如果你这样做,你就不需要

while (i > 0);

在循环结束时,您可以使用

while (true);

就个人而言,我在这种情况下使用while循环,但这只是一种风格选择。

在任何情况下,都不需要检查两次值。