|
5啊哈币
不知道为什么程序最后执行后k为18,感觉k应该为10才对呀。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[99],i,j,k;
for(i=1;i<=100;i++)
{
a[i-1]=0;
}
k=0;
printf("%d\n",k); //这里打印一下k看看是否是0。
for(i=1;i<=100;i++)
{
for(j=1;j<=100;j++)
{
if(i%j==0)
a[i-1]++;
}
printf("%d ",k); //打印i循环中观察k的变化,发现第100次k突然变为18。我每循环一次只会让k加1呀。不知道原因。
if((a[i-1])%2==1)
k=k+1;
}
printf("%d",k); //k最终的数应该等于10才对。
system("pause");
return 0;
}
|
-
1.jpg
(40.92 KB, 下载次数: 32)
运行结果
最佳答案
查看完整内容
是这样的,你本意是想定义a[0],a[1],a[2]一直到a[99]这100个元素,其实直接写成int a[100]就可以了,他默认就是0到99这100个元素,但是你现在定义成a[99],实际上是定义了a[0]到a[98]这99个元素。所以最后的k值会出错,还有定义好的数组不需要a这样用,直接i=0;i
|