C程序要求输出10~100之间的素数。以下几个程序到底哪里不对。求帮忙分析。
代码1
#include <stdio.h>
int main()
{
int i,j;
for(i=10;i<=100;i++)
for(j=2;j<=i;j++)
{
if(i==j) printf("%d\t",i);
if(i%j==0) break;
}
printf("\n");
return 0;
}
以上代码1可以得到正确的输出。但是当把循环体里的两个if调换后,见下方代码2。得到的是空白输出。
代码2
#include <stdio.h>
int main()
{
int i,j;
for(i=10;i<=100;i++)
for(j=2;j<=i;j++)
{
if(i%j==0) break;
if(i==j) printf("%d\t",i);
}
printf("\n");
return 0;
}
以上代码得到的是空白输出。另外。如果把以上的代码2的花括号从if移到第二个for语句上,见代码3。即可得到正确输出。
代码3
#include <stdio.h>
int main()
{
int i,j;
for(i=10;i<=100;i++)
{
for(j=2;j<=i;j++)
if(i%j==0) break;
if(i==j) printf("%d\t",i);
}
printf("\n");
return 0;
}
以上代码3可以得到正确输出。
请问为什么代码2得到的是空白输出。另外为什么代码3把花括号括上去后也能得到正确输出。两个并列的for语句间加不加花括号有什么不同吗。