矩阵

作者在 2012-12-31 20:35:38 发布以下内容

/*输出如下类型的三角矩阵
1  2  3  4  5
12 13 14 6
11 15 7
10 8
9
*/

#include<cstdio>
void main( )
{
	const int  MAX=50;
    int a[MAX][MAX];
	int num;                      //行数
	printf("正整数num=");
	scanf("%u",&num);
    int counter=1;                 //数字的序号
	int k=0;                       //控制层数
    while(counter<=num*(num+1)/2)
	{
		for(int i=k,j=k;j<num-2*k;j++)        //横向输出
		{
			a[i][j]=counter;
			counter++;
		}
        for(int i=k+1,j=num-2*k-2; i<num-2*k,j>=k;i++,j--)    //向左下角输出
		{
            a[i][j]=counter;
            counter++;
		}
		for(int i=num-2*k-2,j=k;i>k;i--)   //向上输出
		{
            a[i][j]=counter;
            counter++;
		}
     k++;                             //转到下一层
	}
	for(int i=0;i<num;i++)
	{
		for(int j=0;j<num-i;j++)
		{
			printf("%4d ",a[i][j]);
		}
	   printf("\n");
	}
}


/*输出如下类型的方形矩阵
1  2  3
     
8  9  4
	  
7  6  5

*/


#include<cstdio>
void main()
{
	const int max=50;
    int a[max][max];
	int n;               //行数
	printf("正整数n=");
	scanf("%d",&n);
	int k=0;             //层数
	int counter=1;       //元素序号
    
	while(counter<=n*n)
	{
		for(int i=k,j=k;j<n-k;j++)          //right
		{
			a[i][j]=counter++;
		}
		for(int i=k+1,j=n-k-1;i<n-k;i++)    //down
        {
			a[i][j]=counter++;
		}
		for(int i=n-k-1,j=n-k-2;j>=k;j--)     //left
		{
            a[i][j]=counter++;
		}
		for(int i=n-k-2,j=k;i>k;i--)          //up
		{ 
            a[i][j]=counter++;
		}
      k++;
	}
    for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%4d ",a[i][j]);
		}
	   printf("\n");
	}
}


/*输出环形矩阵,如:
输入5 6   效果如下
1 1 1 1 1 1
1 2 2 2 2 1
1 2 3 3 2 1
1 2 2 2 2 1
1 1 1 1 1 1
*/


#include<cstdio>
void main()
{
	const int max=30;
	int m,n;
	int a[max][max];
	printf("input the integer m,n");
	scanf("%d,%d",&m,&n);
    int k=0;                                //一圈为一层,层数
    int counter=1;
	while(counter<=m*n)
	{
		for(int i=k,j=k;j<=n-k-1;j++)       //向右
		{
			a[i][j]=k+1;
		    counter++;
		}
		for(int i=k+1,j=n-k-1;i<=m-k-1;i++)   //向下
		{
			a[i][j]=k+1;
		    counter++;
		}
		for(int i=m-k-1,j=n-k-2;j>=k;j--)    //向左
		{
			a[i][j]=k+1;
		    counter++;
		}
		for(int i=m-k-2,j=k;i>k;i--)         //向上
		{
			a[i][j]=k+1;
		    counter++;
		}
		k++;
	}
  for(int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%4d ",a[i][j]);
		}
	   printf("\n");
	}
}
	


#include <stdio.h>
#include <stdlib.h>

#define MIN(a,b) ( (a)<(b) ? (a) : (b) )

void foo( unsigned r, unsigned c )
{
    for( unsigned i=0; i<r; ++i )
    {
        for( unsigned j=0; j<c; ++j )
        {
            unsigned d = MIN( MIN(i+1,r-i), MIN(j+1,c-j) );
            printf( " %u", d );
        }
        printf( "\n" );
    }
}

int main()
{
    foo( 9,10 );

    return 0;
}





C | 阅读 1201 次
文章评论,共1条
ren613
2013-01-11 15:33
1
游客请输入验证码
浏览14355次
文章分类