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);
}
答案 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循环,但这只是一种风格选择。
在任何情况下,都不需要检查两次值。