当前位置:首页 » 编程语言 » 蛇形三角矩形c加加语言
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

蛇形三角矩形c加加语言

发布时间: 2023-08-28 13:21:09

A. 用c语言怎样输出一个N阶蛇形矩阵

先说思想:N=4时候和N=5的时候前面4条斜线上三角是相同的!所以这个可以用递归做。还有个规律很重要就是当2个数的横纵坐标和都是N+1的时候这2个值的和都是N*N+1!问题就很容易解决了!
写个大概:
int **array=NULL;
void main()
{
int n;
scanf("%d",&n);
array=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++)
{
array[i]=(int *)malloc(n*sizeof(int));
}
Testingval(n,n);
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)
printf("%d ",array[i][j]);
printf("\n");
}
free(array);
}
int Testingval(int a,int n)//a 表示n行中的第几个。。n表示是N界矩阵!
{ if(n==1)
{ array[0][0]==1;
array[n][n]=n*n;
}
else
Testingval(a-1,n);
if(a%2)
{ int i=1;
array[0][a-1]=array[0][a-2]+1;
array[n-1][n-a]=n*n+1-array[0][a];
while(i<a)
{

array[i][a-1-i]=array[i-1][a-i+1]+1;
array[n-1-i][n-a+i]=n*n+1-array[i][a-i];
i++;
}
}
else
{int i=1;
array[a-1][0]=array[a-2][0]+1;
array[n-a][n-1]=n*n+1-array[a-1][0];
while(i<a)
{

array[a-1-i][i]=array[a-i+1][i-1]+1;
array[n-a+i][n-1-i]=n*n+1-array[a-1-i][i];
i++;
}
}

}
}

B. 求蛇形方阵c语言代码

#include <stdio.h>
#define N 5 /*可改变数组大小*/
#define M 0 /*改变蛇形数组 方向*/
/*

M = 0
1 3 4
2 5 8
6 7 9

M = 1
1 2 6
3 5 7
4 8 9

*/
void main()
{
int x=0,y=0,b,k=1,i,j,w=1;
int s[N][N];
b = N*N;
s[0][0]=1;
for(i=2; i<=b; i++)
{
if((y == 0) && (x != (N-1)) && (x%2 == (0+M)%2))
{
x++;
k = 1;
w = 0;
}
if((x == 0) && (y != (N-1)) && (y%2 == (1+M)%2))
{
y++;
k = 0;
w = 0;
}

if(x == (N-1) && (y%2 == ((N%2+1)%2+M)%2))
{
y++;
k = 1;
w = 0;
}
if(y == (N-1) && (x%2 == (N%2+M)%2) && !( (x == N-1) && (y == N-1) ) )
{
x++;
k = 0;
w = 0;
}
if((w == 1) && (k == 1))
{
x--;
y++;
}
if((w == 1) && (k == 0))
{
x++;
y--;
}
s[x][y] = i;
w = 1;
}
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
printf("%d\t",s[i][j]);
}
printf("\n");
}
}

C. C语言 蛇形矩阵源程序写法

1 3 4

2 5

6。。。。

这是有规律的,1,2,3,4,5,6.。。。。位置也有规律。程序有解释。所以我们可以

用数组来实现。

程序和解释如下:

#include"stdio.h"
voidmain()
{
inta[20][20],i,j,c=1,x=1,n,s=0;
printf("请输入n的值: ");
scanf("%d",&n);
while(c<=n*(n+1)/2)
{
for(i=s,j=0;i>=0,j<=s;i--,j++)
{
if(s%2!=0)a[i][j]=c++;//无论n值为多少,规律(奇偶性与递增递减之间的关系)不变。
elsea[j][i]=c++;
}
s++;
}//此为左上部分。
while(c<=n*n)
{
for(i=x,j=s-1;i<=s-1,j>=x;i++,j--)
{
if(n%2==0)/*这里因为n值的奇偶性影响了规律(奇偶性与递增递减之间的关系)
所以要对n值得奇偶性进行判定*/
{
if(x%2!=0)a[i][j]=c++;
elsea[j][i]=c++;
}
else
{
if(x%2==0)a[i][j]=c++;
elsea[j][i]=c++;
}
}
x++;
}//此为右下部分。
for(i=0;i<n;i++)//输出二维数组a[n][n],输出蛇形矩阵。
{
for(j=0;j<n;j++)
printf("%3d",a[i][j]);
printf(" ");
}

}

D. c语言蛇形矩阵。 输入n输出矩阵 例如输入3 输出 167 258 349

//以前写得,按蛇形增长方向给每个位置赋值#include#includeint*p=NULL;//当前位置int*s=NULL;//开始位置intn=0;intfunc(intnum,intway){if(num==n*n+1)return0;*p=num;switch(way)//四个方向,下,斜上,右,斜下{case0://向下时下一个位置在p+n处,如当前位置是a[1][0],下个位置应该是a[2][0],中间相差n个数据p=p+n;if((p-s)%n==0)way=1;//下个方向要么是斜上,要么斜下,由当前是上三角还是下三角决定elseway=3;break;case1:p=p-n+1;if(p-s

E. C语言 蛇形矩阵问题

代码如下:

#include<stdio.h>
intmain()
{
intn;
staticinta[100][100];
inti=0,j=0;
intk,x,y;
//printf("请输入整数N,N<=100 ");
scanf("%d",&n);
for(k=1;k<=n*n;k++)
{
a[i][j]=k;
if((i+j)%2==0)
{
if(i!=n-1&&j!=0)
{
i=i+1;
j=j-1;
}
elseif(i==n-1)
{
//j=j+1;
break;
}
else
{
i=i+1;
}

}
else
{
if(i!=0&&j!=n-1)
{
i=i-1;
j=j+1;
}
elseif(j==n-1)
{
break;
//i=i+1;
}
else
{
j=j+1;
}
}

}
for(x=0;x<n;x++)
{
for(y=0;y<n-x;y++)
{
if(y==(n-x-1))
printf("%d",a[x][y]);
else
printf("%d",a[x][y]);
}
printf(" ");
}
return0;
}

你测试下,看对不对?