QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 2341|回复: 8
打印 上一主题 下一主题

大家来练习4

[复制链接]
字体大小: 正常 放大

36

主题

7

听众

2050

积分

  • TA的每日心情

    2017-3-4 20:24
  • 签到天数: 31 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人 新人进步奖 最具活力勋章 发帖功臣

    群组数学建模

    群组数学趣味、游戏、IQ等

    群组LINGO

    群组Latex研学群

    群组C 语言讨论组

    跳转到指定楼层
    1#
    发表于 2010-3-10 21:01 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta |邮箱已经成功绑定
    本帖最后由 为你奋斗 于 2010-3-10 21:16 编辑

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
    为你奋斗!为你奋斗!

    36

    主题

    7

    听众

    2050

    积分

  • TA的每日心情

    2017-3-4 20:24
  • 签到天数: 31 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人 新人进步奖 最具活力勋章 发帖功臣

    群组数学建模

    群组数学趣味、游戏、IQ等

    群组LINGO

    群组Latex研学群

    群组C 语言讨论组

    回复

    使用道具 举报

    sobolev 实名认证       

    3

    主题

    3

    听众

    386

    积分

  • TA的每日心情
    擦汗
    2017-1-20 19:08
  • 签到天数: 67 天

    [LV.6]常住居民II

    自我介绍
    东北大学秦皇岛分校讲师,从事微分代数系统研究,生物数学方向

    社区QQ达人 邮箱绑定达人

    群组学术交流B

    key to problem4(matlab7.6.0/winxp)

    本帖最后由 sobolev 于 2010-3-11 18:31 编辑

    function y=luoxuanzhen(x)
    y=zeros(x,x);
    temp=0;
    a=0;
    for ind=1:floor(x/2);
        temp=1:x-2*ind+1;
        y(ind,ind:end-ind)=4*a+temp;
        y(ind:end-ind,end-ind+1)=4*a+temp(end)+temp;
        y(end-ind+1,ind+1:end-ind+1)=4*a+2*temp(end)+fliplr(temp);
        y(ind+1:end-ind+1,ind)=4*a+3*temp(end)+fliplr(temp);
        a=a+temp(end);
    end
    if (mod(x,2)==1);
    y(ceil(x/2),ceil(x/2))=x.^2;
    end
    已有 1 人评分金币 收起 理由
    为你奋斗 + 5

    总评分: 金币 + 5   查看全部评分

    回复

    使用道具 举报

    lxgjianmo 实名认证       

    0

    主题

    3

    听众

    172

    积分

    升级  36%

    该用户从未签到

    自我介绍
    乐观向上,有积极的态度

    新人进步奖

    回复

    使用道具 举报

    数学者 实名认证       

    170

    主题

    10

    听众

    3232

    积分

    该用户从未签到

    新人进步奖 发帖功臣 最具活力勋章

    本帖最后由 数学者 于 2010-3-11 20:08 编辑

    这题不难,由于工作比较忙,没多少空余时间来写程序,在这里我就把思路给说一下:
    1、定义一个n*n的二维长整形数组;
    2、对于输入n,可以证明输出结果一定有[(n+1)/2]圈(注:[]表示向零取整);
    3、采取由外圈到内圈赋值的方法,将圈数由外往内记为第1,2,...,[(n+1)/2]圈,对于第 i(i>1) 圈,左上角的值为第 i-1 圈左上角的值加上 4(n-2(i-2));
    4、采取顺时针的方法对每一圈进行赋值,这个过程可以用循环很快解决;
    5、设一个外循环,依次对第 i 圈进行赋值。
    就可以实现输出的结果了,呵呵~
    已有 1 人评分金币 收起 理由
    为你奋斗 + 4

    总评分: 金币 + 4   查看全部评分

    挽弓当挽强,用箭当用长!
    回复

    使用道具 举报

    nwave 实名认证       

    0

    主题

    3

    听众

    71

    积分

    升级  69.47%

    该用户从未签到

    自我介绍
    200 字节以内

    不支持自定义 Discuz! 代码
    二楼的做法略显复杂,可以用模除的方法,更为简单。。。。。。。。。。。。。。。
    已有 1 人评分金币 收起 理由
    为你奋斗 + 1

    总评分: 金币 + 1   查看全部评分

    回复

    使用道具 举报

    36

    主题

    7

    听众

    2050

    积分

  • TA的每日心情

    2017-3-4 20:24
  • 签到天数: 31 天

    [LV.5]常住居民I

    社区QQ达人 邮箱绑定达人 新人进步奖 最具活力勋章 发帖功臣

    群组数学建模

    群组数学趣味、游戏、IQ等

    群组LINGO

    群组Latex研学群

    群组C 语言讨论组

    回复 3# sobolev
    应该用C的,matlab功能太强大了。比如magic(3),但是用C编程难度就大了。。。
    为你奋斗!为你奋斗!
    回复

    使用道具 举报

    6601750        

    19

    主题

    4

    听众

    783

    积分

    Belief

    升级  45.75%

  • TA的每日心情
    开心
    2011-11-18 21:21
  • 签到天数: 2 天

    [LV.1]初来乍到

    新人进步奖

    呵呵 专做简单的。。方法和5楼的差不多。声明a[n][n]数组  分别从四个边依次赋值

    代码很简单

    #include<stdio.h>

    int a[100][100];

    void main()
    {
            int i,j,x,k,m,n,nn,b;
            i=0;j=0;m=1;
            printf("Enter n:");
            scanf("%d",&n);
            nn=n*n;
            x=n-1;
            for(b=0;b<=nn;b++)
            {
                    for(k=0;k<x;k++)
                    {
                            a[i][j]=m;
                            m++;
                            j++;
                    }
                    for(k=0;k<x;k++)
                    {
                            a[i][j]=m;
                            m++;
                            i++;
                    }
                    for(k=0;k<x;k++)
                    {
                            a[i][j]=m;
                            m++;
                            j--;
                    }
                    for(k=0;k<x;k++)
                    {
                            a[i][j]=m;
                            m++;
                            i--;
                    }
                    i++;j++;
                    x=x-2;   /*下一圈的时候 每个边少了两个点*/
                    if(x==0)  /*因为x=n-1,当x=0的时候 实际上还有一个点没赋值*/
                       x=1;
            }
            for(i=0;i<n;i++)
            {
                    for(j=0;j<n;j++)
                    {
                            printf("%d\t",a[i][j]);
                    }
                    printf("\n");
            }
            getch();
    }
    回复

    使用道具 举报

    11

    主题

    6

    听众

    2308

    积分

    升级  10.27%

  • TA的每日心情
    慵懒
    2015-6-9 22:13
  • 签到天数: 155 天

    [LV.7]常住居民III

    社区QQ达人 邮箱绑定达人 发帖功臣

    群组2012第三期美赛培训

    群组学术交流A

    群组学术交流B

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2026-4-12 17:32 , Processed in 0.549120 second(s), 98 queries .

    回顶部