鱼C论坛

 找回密码
 立即注册
查看: 1911|回复: 2

[已解决]怎么能看到魔法方法的源码

[复制链接]
发表于 2020-12-11 17:33:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
想知道python魔法方法源码是用python写的吧,在哪能看到源码。
最佳答案
2020-12-11 18:55:29
本帖最后由 风过无痕1989 于 2020-12-11 18:56 编辑

C语言的,我这电脑里就有
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int array(int n)

  4. {
  5.         int i, j, no, num, max;
  6.         int *mtrx;
  7.         if(n%2 == 0)                          /*n是偶数,则加1使其变为奇数*/
  8.         {
  9.                 n = n + 1;
  10.         }
  11.         max = n * n;
  12.         mtrx = (int *)malloc(max + max);      /*为魔方阵分配内存*/
  13.         mtrx[n / 2] = 1;                      /* 将1存入数组*/
  14.         i = 0;                                /*自然数1所在行*/
  15.         j = n / 2;                            /*自然数1所在列*/
  16. /*从2开始确定每个数的存放位置*/
  17.         for(num = 2; num <= max; num++)
  18.         {
  19.                 i = i - 1;
  20.                 j = j + 1;
  21.                 if((num - 1) % n == 0)                /*当前数是n的倍数*/
  22.                 {
  23.                         i = i + 2;
  24.                         j = j - 1;
  25.                 }
  26.                 if(i < 0)                         /*当前数在第0行*/
  27.                 {
  28.                         i = n - 1;
  29.                 }
  30.                 if(j > n - 1)                     /*当前数在最后一列,即n-1列*/
  31.                 {
  32.                         j = 0;
  33.                 }
  34.                 no = i * n + j;                   /*找到当前数在数组中的存放位置*/
  35.         mtrx[no] = num;
  36.         }

  37. /*打印生成的魔方阵*/
  38.         printf("生成的%d-魔方阵为:",n);
  39.         no = 0;
  40.         for(i = 0; i < n; i++)
  41.         {
  42.                 printf("\n");
  43.                 for(j = 0; j < n; j++)
  44.                 {
  45.                         printf("%3d", mtrx[no]);
  46.                         no++;
  47.                 }
  48.         }
  49.         printf("\n");
  50.         free(mtrx);
  51.         return 0;
  52. }

  53. int main()

  54. {
  55.         int n;
  56.         printf("请输入n值:");
  57.         scanf("%d", &n);
  58.         array(n);                             /*调用array函数*/
  59.         return 0;
  60. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-11 18:44:03 | 显示全部楼层
不是用 Python 而是用 C 写的。
https://github.com/python/cpython/
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-11 18:55:29 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-11 18:56 编辑

C语言的,我这电脑里就有
  1. #include<stdio.h>
  2. #include<stdlib.h>

  3. int array(int n)

  4. {
  5.         int i, j, no, num, max;
  6.         int *mtrx;
  7.         if(n%2 == 0)                          /*n是偶数,则加1使其变为奇数*/
  8.         {
  9.                 n = n + 1;
  10.         }
  11.         max = n * n;
  12.         mtrx = (int *)malloc(max + max);      /*为魔方阵分配内存*/
  13.         mtrx[n / 2] = 1;                      /* 将1存入数组*/
  14.         i = 0;                                /*自然数1所在行*/
  15.         j = n / 2;                            /*自然数1所在列*/
  16. /*从2开始确定每个数的存放位置*/
  17.         for(num = 2; num <= max; num++)
  18.         {
  19.                 i = i - 1;
  20.                 j = j + 1;
  21.                 if((num - 1) % n == 0)                /*当前数是n的倍数*/
  22.                 {
  23.                         i = i + 2;
  24.                         j = j - 1;
  25.                 }
  26.                 if(i < 0)                         /*当前数在第0行*/
  27.                 {
  28.                         i = n - 1;
  29.                 }
  30.                 if(j > n - 1)                     /*当前数在最后一列,即n-1列*/
  31.                 {
  32.                         j = 0;
  33.                 }
  34.                 no = i * n + j;                   /*找到当前数在数组中的存放位置*/
  35.         mtrx[no] = num;
  36.         }

  37. /*打印生成的魔方阵*/
  38.         printf("生成的%d-魔方阵为:",n);
  39.         no = 0;
  40.         for(i = 0; i < n; i++)
  41.         {
  42.                 printf("\n");
  43.                 for(j = 0; j < n; j++)
  44.                 {
  45.                         printf("%3d", mtrx[no]);
  46.                         no++;
  47.                 }
  48.         }
  49.         printf("\n");
  50.         free(mtrx);
  51.         return 0;
  52. }

  53. int main()

  54. {
  55.         int n;
  56.         printf("请输入n值:");
  57.         scanf("%d", &n);
  58.         array(n);                             /*调用array函数*/
  59.         return 0;
  60. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-26 20:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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