//Prime test
if(iSelectedOp == 6 )
{
printf("Enter positive integer to be tested: \n");
scanf("%d", &dInteger1);
int i;
int f;
for (i= 2; i < 10; i++)
{
if (num1 % i == 0);
f++;
printf("%d is prime\n", dInteger1);
else
printf("no prime\n");
}
}
嘿所有,我这里有一个函数,它接受一个输入数字并告诉用户它是否是素数或者不是。我收到的错误是说我有一个没有先前if的别人。我确定它缺少一些语法。有什么想法吗?
答案 0 :(得分:1)
你的内部if有多个语句,所以它需要括号
if (num1 % i == 0)
{
f++;
printf("%d is prime\n", dInteger1);
}
else
printf("no prime\n");
此外,您在if
之后还有一个额外的分号。
为避免混淆并使代码更易于阅读,我通常会使用{}是否需要它们。这是一种风格,但并非绝对必要。
if (num1 % i == 0)
{
f++;
printf("%d is prime\n", dInteger1);
}
else
{
printf("no prime\n");
}
答案 1 :(得分:1)
if (num1 % i == 0);
^ delete this
应该是:
if (num1 % i == 0) {
f++;
printf("%d is prime\n", dInteger1);
} else {
printf("no prime\n");
}
没有大括号,if
(以及while
,for
等)语句的正文只会发送到;
(因此对于if (true) a(); b();
,{{ 1}}是a()
所涵盖的唯一部分; if
始终执行,因为它超出了b()
的范围。
答案 2 :(得分:0)
您的if
语句后面有分号,这会阻止else
跟进。在相关的说明中,我认为您的实施根本不起作用......这可能更接近您正在寻找的内容:
bool prime = true;
for (i = 2; i*i <= dInteger1; i++)
{
if (dInteger1 % i == 0)
prime = false;
}
if(prime)
printf("%d is prime\n", dInteger1);
else
printf("no prime\n");