请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

版权申明
查看: 1249|回复: 1

这段代码在不同平台下编译后运行输出结果不一样!

[复制链接]

该用户从未签到

发表于 2015-9-28 20:47:33 | 显示全部楼层 |阅读模式
  1. PROGRAM EULER_PHI;
  2. TYPE LINKED_PTR=^LINK_NODE;
  3.         LINK_NODE=RECORD
  4.         VALUE:INTEGER;
  5.         NEXT:LINKED_PTR;
  6. END;
  7. VAR N,M,I,R:INTEGER;VAR NODE,G:LINKED_PTR;
  8. PROCEDURE PRINTING(PTR:LINKED_PTR);
  9. VAR P:LINKED_PTR;
  10. BEGIN
  11. P:=PTR;
  12. P:=P^.NEXT;
  13. R:=R+1;
  14. WRITE('  ',R,' ',P^.VALUE);
  15. IF P^.NEXT=NIL THEN EXIT();
  16. PRINTING(P);
  17. FREEMEM(P,SIZEOF(LINKED_PTR));
  18. END;
  19. PROCEDURE SUCCESSOR(VAR PTR:LINKED_PTR);
  20. VAR P:LINKED_PTR;
  21. BEGIN
  22.     IF PTR^.NEXT=NIL THEN BEGIN
  23.         (*CREATE A NEW NODE AND LINK IT TO PREVIOUS ONE*)
  24.         PTR^.NEXT:=ALLOCMEM(SIZEOF(LINK_NODE));
  25. END;
  26.         P:=PTR^.NEXT;PTR:=P;
  27. END;
  28. PROCEDURE ASSIGNMENT(PTR:LINKED_PTR;N:INTEGER);
  29. VAR K:INTEGER;
  30. BEGIN
  31.         FOR K:=2 TO N DO
  32.         BEGIN
  33.                 SUCCESSOR(PTR);
  34.         END;
  35. END;
  36. PROCEDURE TRAVERSE_ELEMENTS(O:LINKED_PTR; VAR Q:LINKED_PTR;K:INTEGER);
  37. VAR T:INTEGER;
  38. BEGIN
  39.     FOR T:=2 TO K DO
  40.     BEGIN
  41.         SUCCESSOR(O);
  42.     END;
  43.     Q:=O;
  44. END;
  45. BEGIN
  46. R:=1;
  47. READLN(N);
  48. NODE:=ALLOCMEM(SIZEOF(LINK_NODE));
  49. NODE^.VALUE:=1;
  50. ASSIGNMENT(NODE,N);
  51. M:=2;
  52. WHILE(M<=N) DO
  53. BEGIN
  54.         TRAVERSE_ELEMENTS(NODE,G,M);
  55.         IF G^.VALUE=0 THEN BEGIN
  56.             I:=M;
  57.             WHILE(I<=N) DO
  58.             BEGIN
  59.                 TRAVERSE_ELEMENTS(NODE,G,I);
  60.                 IF G^.VALUE=0 THEN G^.VALUE:=I;
  61.                 G^.VALUE:=(G^.VALUE DIV M)*(M-1);
  62.                 I:=I+M;
  63.             END;
  64.             END;
  65.             M:=M+1;
  66. END;
  67. PRINTING(NODE);
  68. READLN();
  69. END.
复制代码
回复

使用道具 举报

该用户从未签到

 楼主 发表于 2015-9-28 20:50:42 | 显示全部楼层
在linux下时完全正确,windows下输出错误的结果。
回复 支持 反对

使用道具 举报

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1

GMT+8, 2019-1-20 21:23 , Processed in 0.041131 second(s), 8 queries , Redis On.

Powered by Discuz! F1.0 Build 20160930

© 2001-2019 Comsenz Inc. & Discuz! Fans

快速回复 返回顶部 返回列表