2道c语言问题求教 !

2道c语言问题求教!流程解释一下... 2道c语言问题求教 !流程解释一下 展开
 我来答
匿名用户
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

White_MouseYBZ
2016-10-20 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6633万
展开全部
把第一个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。供参考……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-10-20
展开全部

第二道题目:

这道题的pr()函数是检测输入的n值是不是质数;如果是返回1,否则返回0;整个函数功能其实就是写出一个数字由两个质数相加的形式;例如,你输入30,就会出现;30=7+23;30=11+13;30=13+17;如果你输入20,他就会输出20=3+17,20=7+13;如果输入的数字无法写成两个质数相加,则不会输出;你可以实际编程检测;

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
unsamesky
2016-10-20 · TA获得超过2735个赞
知道小有建树答主
回答量:859
采纳率:100%
帮助的人:436万
展开全部


第一题

追答
分给上面那位吧,第一题就是一个循环链表应用。
追问
谢谢了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式