这题怎么解的 谢谢

 我来答
sunny火柴小G
2016-05-26 · TA获得超过579个赞
知道答主
回答量:4
采纳率:0%
帮助的人:4573
展开全部

手算这种双重循环就是精神不正常

#include<stdio.h>


int main()

{

int a[20] = { 0 }, i, j, cnt = 0;

for ( i = 2; i < 10; i++)

{

if (0 == a[i])

for (j = i + i; j < 20; j = j + i)

a[j] = 1;

for (i = 2; i < 20; i++)

if (0 == a[i]) cnt++;

printf("count=%d\n", cnt);

}

    return 0;

}


输出  count=10


Yokecq
2016-05-26
知道答主
回答量:3
采纳率:0%
帮助的人:3287
展开全部
int a[20]=0; 这句将数组的所有元素初始化
然后执行for循环。i=2, a[2]=0,继续执行,j=4,a[4]=1,j=6, 这个for循环相当于把4到19数都赋值为1,然后返回上一个for循环继续执行, i=3 a[3]=0,继续执行,j=6,a[6]=1,j=9, 在这个循环中把a[5]空了出来,所以最后判断a[i]的值的时候有a[1],a[0],a[2],a[3],a[5],a[7],a[11],a[13],a[17],a[19]. 得到最后的结果10
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式