4个回答
2016-10-20
展开全部
第一题
第一个循环的时候,把x[i].a(i取0 1 2)分别赋值为1,2,3,x[i].b分别赋值为5,6,7
而x[i].next总是指向下一个数值,最后一个则指向第一个,是一个循环
第二个循环里输出一个x[0].a,然后输出下一个数x[1].b,然后是下一个x[2].a,然后是x[0].b.....以此循环
为了形象点,我们把x[i].a和x[i].b写成两行,
3 4 5 3 4 5
5 6 7 5 6 7
输出就是
按这张图的红线依次输出,循环3次,每次输出两个,就是输出6个数,结果是365547
第二题
是求一个数能不能表示成两个素数相加,pr函数的功能是判断一个数是否是素数,每次循环判断k和m-k是不是都是素数,都是素数说明该数可以表示成两个素数相加
输入30,输出就是30=7+23
展开全部
把第一个for循环后的x的内容搞清楚就好办了!
x[0].a==3,x[0].b==5,x[0].next==&x[1];
x[1].a==4,x[1].b==6,x[1].next==&x[2];
x[2].a==5,x[2].b==7,x[2].next==&x[0]——最后这一项由x[2].next=x;完成。
第二个for循环中p=x使p==&x[0],下面由i控制作3次循环:
i==0时:输出p->a,就是x[0].a为3;接着p=p->next;使p指向x[1],所以输出x[1].b为6;再做一次p=p->next;使p指向x[2]。本次循环结果输出36……
i==1时:输出p->a,就是x[2].a为5;接着p=p->next;使p指向x[0],所以输出x[0].b为5;再做一次p=p->next;使p指向x[1]。本次循环后输出结果是3655……
i==2时:输出p->a,就是x[1].a为4;接着p=p->next;使p指向x[2],所以输出x[2].b为7;再做一次p=p->next;使p指向x[0]。本次循环后输出结果是365547。
i==3时循环结束,所以最后结果是365547。
////////////////////////////////////////////////////////////
本题的自定义函数pr是判断n是否为素数,是则返回1,反之返回0。输入30时,由k和30-k拆分为两个数,当k和30-k都为素数时输出30=系数1+系数2的表达。主函数中k=3开始,步长为2增至<30/2==15,所以k的取值是3,5,7,9,11,13,显然只有7+23,11+19,13+17三组都是系数,所以最后结果是30 = 7 + 23,30 = 11 + 19,30 = 13 +17。供参考……
x[0].a==3,x[0].b==5,x[0].next==&x[1];
x[1].a==4,x[1].b==6,x[1].next==&x[2];
x[2].a==5,x[2].b==7,x[2].next==&x[0]——最后这一项由x[2].next=x;完成。
第二个for循环中p=x使p==&x[0],下面由i控制作3次循环:
i==0时:输出p->a,就是x[0].a为3;接着p=p->next;使p指向x[1],所以输出x[1].b为6;再做一次p=p->next;使p指向x[2]。本次循环结果输出36……
i==1时:输出p->a,就是x[2].a为5;接着p=p->next;使p指向x[0],所以输出x[0].b为5;再做一次p=p->next;使p指向x[1]。本次循环后输出结果是3655……
i==2时:输出p->a,就是x[1].a为4;接着p=p->next;使p指向x[2],所以输出x[2].b为7;再做一次p=p->next;使p指向x[0]。本次循环后输出结果是365547。
i==3时循环结束,所以最后结果是365547。
////////////////////////////////////////////////////////////
本题的自定义函数pr是判断n是否为素数,是则返回1,反之返回0。输入30时,由k和30-k拆分为两个数,当k和30-k都为素数时输出30=系数1+系数2的表达。主函数中k=3开始,步长为2增至<30/2==15,所以k的取值是3,5,7,9,11,13,显然只有7+23,11+19,13+17三组都是系数,所以最后结果是30 = 7 + 23,30 = 11 + 19,30 = 13 +17。供参考……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2016-10-20
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询