作者在 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;
}