无锡市新区管委会:求i的顺序?

来源:百度文库 编辑:中科新闻网 时间:2024/04/28 22:14:59
前注:此题用的筛法故程序复杂了些
#include<math.h>
main()
{int i,j,n,a[101];
for(i=1;i<=100;i++)/*此题的第一个i,其值为1*/
a[i]=i;
for(i=2;i<sqrt(100);i++)/*此题的第二个i,其值为2*/
for(j=i+1;j<=100;j++)/*此题第三个i,其值为i+1,其运行结果包括2,也就是i必须为1,1+1=2....可是为什么前面还有一个i值为2,这儿应该以哪个i为准??*/
{if(a[i]!=0&&a[j]!=0)
if(a[j]%a[i]==0)a[j]=0;}
for(i=2,n=0;i<=100;i++)
{if(a[i]!=0){printf("%5d",a[i]);n++;}
if(n==10){printf("\n");n=0;}}getch();}
运行结果包括2

应该以
for(i=2;i<sqrt(100);i++)/*此题的第二个i,其值为2*/
中的i为准
因为“此题的第一个i”的for循环已经结束。第三个for是嵌套在第二个for里面的,即使你在第二for里没有打大括号。建议在第二个for中打上大括号,养成良好的习惯:)