趣味程序设计

#include<stdio.h>
#include<string.h>
#define N 100
int a[N][N];
int x, n, i, j, k, temp;
void menu();
void magic_Matrix();
void rotate_Matrix();
void snake_Matrix();
void Chinese_Triangle();
void print_Matrix();


int main()
{
while(1)
{
menu();
scanf("%d", &x);
switch(x)
{
case 1: printf("请输入矩阵大小: ");
scanf("%d", &n);
magic_Matrix();
break;
case 2: printf("请输入矩阵大小:");
scanf("%d", &n);
rotate_Matrix();
break;
case 3: printf("请输入矩阵大小:");
scanf("%d", &n);
snake_Matrix();
break;
case 4: printf("请输入行大小:");
scanf("%d", &n);
Chinese_Triangle();
break;
case 0: printf("\n\n结束\n\n");
return 0;
default:printf("\n输入错误,重新输入\n");
}
}
return 0;
}


void menu()
{
printf("*1.魔方矩阵\n");
printf("*2.旋转矩阵\n");
printf("*3.蛇形矩阵\n");
printf("*4.杨辉三角形\n");
printf("*0.退出\n");
printf("请输入0-4\n");
}


void magic_Matrix()
{
i=0;j=n/2;
for(k=1;k<=n*n;k++)
{
a[i][j]=k;


if(k%n)
{
i=(i-1+n)%n;
j=(j+1)%n;
}
else
i=(i+1)%n;
}
printf("输出魔方阵\n");
print_Matrix();
}


void print_Matrix()
{
if(x<4)
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%3d", a[i][j]);
printf("\n");
}
else
for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
printf("%3d", a[i][j]);
printf("\n");
}
}


void rotate_Matrix()
{
    memset(a, 0, sizeof(a));
i=0; j=0; k=a[0][0]=1;
while(k<n*n)
{
while(j+1<n && a[i][j+1]==0) a[i][++j]=++k;
while(i+1<n && a[i+1][j]==0)    a[++i][j]=++k;
while(j-1>=0 && a[i][j-1]==0)   a[i][--j]=++k;
while(i-1>=0 && a[i-1][j]==0)   a[--i][j]=++k;
}
printf("输出旋转矩阵\n");
print_Matrix();
}


void snake_Matrix()
{
    i=0; j=0; k=1;
    while(k<=n*n)
    {
        while(i<n && j>-1)  a[i++][j--]=k++;


        if(j<0 && i<n)
            j=0;
        else
        {
            j=j+2;
            i--;
        }


        while(i>-1 && j<n)  a[i--][j++]=k++;


        if(i<0 && j<n)
            i=0;
        else
        {
            i=i+2;
            j--;
        }
    }
    printf("输出蛇形矩阵\n");
    print_Matrix();
}


void Chinese_Triangle()
{
    for(i=0;i<n;i++)
        a[i][0]=a[i][i]=1;
    for(i=2;i<n;i++)
        for(j=1;j<i;j++)
            a[i][j]=a[i-1][j-1]+a[i-1][j];
    printf("输出杨辉三角形\n");
    print_Matrix();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hhjian6666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值