C语言之蛇形矩阵,个人算法,大佬勿笑。。。。。。。

用c++写的,小白一个。
题目如下
从键盘任意输入一个自然数n(n表示矩阵的大小,假设不超过100),请编程输出一个nn的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出"Input error!"。
提示 用两个双重循环分别计算n
n矩阵的左上三角和右下三角,设置一个计数器从1开始记录当前要写入矩阵的元素值,每次写完一个计数器加1,在计算左上角和右下角矩阵元素时,分奇数和偶数两种情况考虑待写入的元素在矩阵中的行列下标位置。
这道题的思路如下:
主要是判断是i=0还是j=0;如果是j=0就让i++,如果是i=0就让j++;然后再按照对角线的方向一次的递加1就行了,这是输出上三角形,还有下三角形,主要的思路和这个一样,不过要让i和j都从n-1开始按着n*n递减,也是沿着对角线递减,知道i>1就行
具体输出的实例如下:

在这里插入图片描述
在这里插入图片描述

#include <iostream>
#define N 10
using namespace std;
**//这个函数的功能就是产生蛇形矩阵。**
void chanshe(int a[][N], int n)
{
**//这是输出上三角**
	int c=1,i=0,j=0;
	int s;
	s=n*n;
	a[i][j]=c;
	while(j<n&&i<n)//循环结束条件
	{
	if(i==0)//判断i==0,就让j++;
	{
		j++;
		a[i][j]=++c;
		while(j!=0)//按照对角线的顺序输出
	{
		i++;
		j--;
		a[i][j]=++c;
	}
	}
	if(j==0)//判断j==0;让i++;
	{
		i++;
		a[i][j]=++c;
		while(i!=0)//沿对角线递加
		{
			j++;
			i--;
			a[i][j]=++c;
		}
	}
}
**//这是输出下三角,思路和上面一样**
    i=n-1;
    j=n-1;
    a[i][j]=s;
    while(i>1&&j>1)
    {
    	if(i==n-1)
    	{
    		j--;
    		a[i][j]=--s;
    		while(j!=n-1&&j>0)
    		{
    			i--;
    			j++;
    			a[i][j]=--s;
			}
		}
		if(j==n-1)
		{
			i--;
			a[i][j]=--s;
			while(i!=n-1&&i>0)
			{
				j--;
				i++;
				a[i][j]=--s;
			}
		}
	}

}
//这个函数的功能是输出这个二维数组 也就是这个矩阵。
void out(int a[][N],int n)
{
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			printf("%5d",a[i][j]);
		}
		cout <<endl;
	}
}
int main()
{
	int a[N][N],n;
	cin >> n;
	ZigzagMatrix(a,n);
	out(a,n);
	return 0;
}

大佬勿喷啊,谢谢,小白一个

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值