#include<stdio.h>
int main()
{int i,j,a[100],n=0;
for(i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for(i=2;i<=100;i++)
for(j=i+1;j<=100;j++)
{if(a[j]!=0&&a[i]!=0)
if(a[j]%a[i]==0)
a[j]=0;
}
for(i=1;i<=100;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
n++;}
if(n==10)
{printf("\n");
n=0;}
}
printf("\n");
return 0;
}
这个是有问题的,最后会输出到101.把int a[100]改成101就会输出至97.。。这个是什么问题。
不懂
100的情况下,数组a[100]在第一个for不是给所有赋值了吗 ? 最大的一个数a[99]=99 ,怎么出来101
额,,,我想知道我哪里错了,答案的话网上大把。
追答定义至a[101]
你的循环
for(i=2;i<=100;i++)
for(j=i+1;j<=100;j++)
都能到100,如果定义a[100],就会越界
哦,原来是这样,谢谢。
本回答被提问者采纳