您的位置:首页 > 编程语言 > C语言/C++

Mohican_3/18C语言 二维数组转置 杨辉三角 魔方阵初级版本

2018-03-21 23:00 302 查看
#include<stdio.h>
#include<string.h>
//1.二维数组转置
void Change1(int (*brr)[3],int (*crr)[2],int row,int col)
{
for(int i = 0;i < row;i++)//遍历 --->brr
{
for(int j = 0;j < col;j++)
{
crr[j][i] = brr[i][j];
}
}
}
void Show1(int *crr,int row,int col)//row和col crr
{
for(int i = 0;i < row;i++)
{
for(int j = 0;j < col;j++)
{
printf("%d ",crr[i*col+j]);
}
printf("\n");
}
}
//2杨辉三角
void YhTriangle1(int (*drr)[10],int row,int col)
{
/*
i:代表行:i == j   1
          j == 0
drr[i][j] = drr[i-1][j-1]+drr[i-1][j]
遍历drr
*/
for(int i = 0;i < row;i++)
{
for(int j = 0;j < col;j++)
{
if(i == j || j == 0)
{
drr[i][j] = 1;
}
else
{
drr[i][j] = drr[i-1][j-1]+drr[i-1][j];
}
}
}
}
void Show2(int *crr,int row,int col)//row和col crr
{
for(int i = 0;i < row;i++)
{
for(int j = 0;j <= i;j++)
{
printf("%d ",crr[i*col+j]);
}
printf("\n");
}
}

void MFZ(int n )
{
if(n%2==0)
printf("error  no mofangzhen \n");
int row,col;//p --- 行 row  q---列  col
int tr,tc;
int v;
int a[20][20]={0};
a[0][n/2]=1;  //将1放在第一行中间一列;
for(row=0,col=n/2,v=2;v<=n*n;v++)
{
tr=row;
tc=col;

row= row-1;  //行减1
col=col+1;//列加一
if(row<0) row= row+n;
if(col>=n) col=col-n;
if(a[row][col]==0)
a[row][col]=v;
else {
row=tr;
col=tc;
row=row+1;
if(row>=n)row=row-n;
a[row][col]=v;
}
}
for(row=0;row<n;row++)
{
for(col=0;col<n;col++)
printf("%5d",a[row][col]);
printf("\n");
}

}

int main()
{
    int brr[2][3] = {1,1,0,1,2,9};
int crr[3][2];
Change1(brr,crr,2,3);
Show1((int *)crr,3,2);
int drr[10][10];
    YhTriangle1(drr,10,10);
Show2((int *)drr,10,10);
MFZ(5);
getchar();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: