| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1075 人关注过本帖
标题:为矩阵n*n赋值,外层全赋1,第二层全赋2,依此类推
只看楼主 加入收藏
常艳艳cyy
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2011-3-26
结帖率:0
收藏
已结贴  问题点数:20 回复次数:10 
为矩阵n*n赋值,外层全赋1,第二层全赋2,依此类推
大家帮忙
搜索更多相关主题的帖子: 矩阵 
2011-03-26 19:03
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
收藏
得分:3 
坐等高人!!!

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-03-26 21:13
zhangzhilai8
Rank: 1
等 级:新手上路
帖 子:11
专家分:4
注 册:2011-3-25
收藏
得分:3 
我用三重for循环,但还有点问题,期待好的答案
2011-03-26 22:36
海之舟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:43
专家分:150
注 册:2011-1-8
收藏
得分:3 
#include "stdio.h"
#define val 15   /*通过改变val的值,从而输出相应的val*val矩阵*/
void main()
{
   int arr[val][val];
   int j,k,i,m=0;
   int g=0;
   for( i=0;i<val;i++)
    {
      for ( j=i;j<val-i ; j++)
      {
       arr[i][j] = i+1;
      }
      if(j>=val-i)
      {
        if (i > (val / 2))
        {
         k = val / 2-m ;
         while((val%2==0)&&j < val)
         {
          arr[i][j] = --k;
          j++;
         }
         while ((val%2!=0)&&j < val)
         {   
          arr[i][j] = k--;
          j++;
         }                       
         m++;
        }
        else
        {
          k = i;
          while (j <val)
          {
          arr[i][j] = k--;
          j++;
          }
         }                  
      }
  }           
  for ( i=0;i<val ;i++ )
  {
    for ( j = i+1;j <val;j++ )
     {
      arr[j][i]=arr[i][j];
     }

  }         
  for(i=0;i<val;i++)
   {
    for(j=0;j<val;j++)
     {
      printf("%d ",arr[i][j]);
      g++;
      if(g==val)
      {
       printf("\n");
       g = 0;
      }
     }
               
   }           
}
2011-03-26 22:53
sangcar
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2011-3-26
收藏
得分:0 
还是Matlab给力啊,轻而易举搞定这类问题~~~~
2011-03-26 23:29
御坂美琴
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:魔術の禁書目錄
等 级:小飞侠
威 望:9
帖 子:952
专家分:2929
注 册:2010-8-18
收藏
得分:3 
写一个子函数判断某坐标距离边界的最近距离就可以了

永远为正义而奋斗,锄强扶弱的Level 5 超能力者
とある魔術の禁書目錄インデックス__御み坂さか美み琴こと
http://bbs.bccn.net/space.php?action=threads&uid=483997
2011-03-26 23:37
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:3 
程序代码:
#include <stdio.h>
#define AbsInt(x) ((x)>=0?(x):-(x))
int main()
{
    int x, y,size,t,test;
    printf("Input the size:");
    scanf("%d",&size);
    t=size/2;test=(size%2==0?0:size);
    for (y = -t; y <= t; y++)
    {
        if(y==test)
            continue;
        for (x = -t; x <= t; x++)
        {
            if(x==test)
                continue;
            if(AbsInt(y)<=AbsInt(x))
                printf("%d ",t-AbsInt(x)+1);
            else
                printf("%d ",t-AbsInt(y)+1);
        }
        putchar('\n');
    }
    return 0;
}
代码有受“御坂美琴”大姐姐的一个关于循环的帖子影响,很受教,在此向大姐姐问好~

********多贴代码,少说空话*******
2011-03-27 00:13
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:3 
这样的东西其实不难  就是得死扣一会  呵呵

                                         
===========深入<----------------->浅出============
2011-03-27 00:31
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:3 
以下是引用ppfly在2011-3-27 00:13:42的发言:

#include  
#define AbsInt(x) ((x)>=0?(x):-(x))
int main()
{
    int x, y,size,t,test;
    printf("Input the size:");
    scanf("%d",&size);
    t=size/2;test=(size%2==0?0:size);
    for (y = -t; y <= t; y++)
    {
        if(y==test)
            continue;
        for (x = -t; x <= t; x++)
        {
            if(x==test)
                continue;
            if(AbsInt(y)<=AbsInt(x))
                printf("%d ",t-AbsInt(x)+1);
            else
                printf("%d ",t-AbsInt(y)+1);
        }
        putchar('\n');
    }
    return 0;
}代码有受“御坂美琴”大姐姐的一个关于循环的帖子影响,很受教,在此向大姐姐问好~
这写的完全不合题意嘛, 题目要求给矩阵赋值...



[ 本帖最后由 BlueGuy 于 2011-3-27 00:47 编辑 ]

我就是真命天子,顺我者生,逆我者死!
2011-03-27 00:36
ppfly
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:297
专家分:1956
注 册:2009-5-17
收藏
得分:0 
回复 9楼 BlueGuy
sorry,没看清题意,
对矩阵赋值也不难,改动下上面的代码,在屏幕输出的语句前添加矩阵对应点的赋值,只是对于偶维数的矩阵相对麻烦点,要除去中心点。
程序代码:
#include <stdio.h>
#define AbsInt(x) ((x)>=0?(x):-(x))
#define size 14
int main()
{
    int x, y,t,test;
    int array[size][size];
    t=size/2;test=(size%2==0?0:size);
    int m=0,n=0;//对偶维数的校正
    for (y = -t; y <= t; y++)
    {
        if(y==test)
            continue;
        for (x = -t; x <= t; x++)
        {
            if(x==test)
                continue;
            if(x>test)m=-1;
            if(y>test)n=-1;
            if(AbsInt(y)<=AbsInt(x))
                array[x+t+m][y+t+n]=t-AbsInt(x)+1;
            else
                array[x+t+m][y+t+n]=t-AbsInt(y)+1;
            m=n=0;
        }
    }  
    return 0;
}



[ 本帖最后由 ppfly 于 2011-3-27 02:31 编辑 ]

********多贴代码,少说空话*******
2011-03-27 02:11
快速回复:为矩阵n*n赋值,外层全赋1,第二层全赋2,依此类推
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018604 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved