『壹』 c語言 蛇形矩陣問題

代碼如下:

#include<stdio.h>
intmain()
{
intn;
staticinta[100][100];
inti=0,j=0;
intk,x,y;
//printf("請輸入整數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;
}

你測試下,看對不對?

『貳』 c語言,蛇形方陣怎麼寫

#include <stdio.h>

int main()

{int n,i,j,l,t,i1,k=0,a[20][20];

scanf("%d",&n);

i=0;

l=j=n-1;

for(t=n/2;t>0;t--)

{for(i1=0;i1<l;i1++)

a[i++][j]=++k;

for(i1=0;i1<l;i1++)

a[i][j--]=++k;

for(i1=0;i1<l;i1++)

a[i--][j]=++k;

for(i1=0;i1<l;i1++)

a[i][j++]=++k;

l-=2;

j--;

i++;

}

if(n%2)a[n/2][n/2]=++k;

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

printf("%4d",a[i][j]);

printf(" ");

}

return 0;

}

『叄』 用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++;
}
}

}
}

『肆』 用C語言輸出一個N階蛇形矩陣

思路有點亂,不過也算是比較好的完成要求了~

#include <stdio.h>

int main()
{
int n;
puts("please enter n:");
scanf("%d",&n);
for(int i=0;i<=n-1;i++)
{
static int rowHead = 1,up =0;
rowHead += i;
printf("%d\t",rowHead);
for(int j=1,num = rowHead;j<n-i;j++)
{
num += j+1+up;
printf("%d\t",num);
}
printf("\n");
up++;
}

return 0;
}

『伍』 c語言蛇形填陣

#include<stdio.h>
#defineMAXN50
inta[MAXN][MAXN];
intmain()
{
intn,x,y,tot=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
tot=a[x=0][y=n-1]=1;
while(tot<n*n)
{
while(x+1<n&&!a[x+1][y])a[++x][y]=++tot;
while(y-1>=0&&!a[x][y-1])a[x][--y]=++tot;
while(x-1>=0&&!a[x-1][y])a[--x][y]=++tot;
while(y+1<n&&!a[x][y+1])a[x][++y]=++tot;
}
for(x=0;x<n;x++)
{
for(y=0;y<n;y++)
printf("%3d",a[x][y]);
puts("");
}
return0;
}

『陸』 蛇形填數 用c語言

||#include <stdlib.h>
#include <stdio.h>
void main()
{
int a[21][21], i, j, n;
scanf("%d", &n);

for( i=0; i<n; i++)
(j=0; j<n; j++)
a[i][j] = -1;

int value = 1, max = n*n;
i = 0, j=n-1;
int inci = 1, incj = 0;
int nexti, nextj;
while(value <= max){
a[i][j] = value ++;
//printf("i=%d, j=%d value=%d\n",i, j, value-1);
nexti = i + inci;
nextj = j + incj;
if( nexti>n-1 || nexti<0 || nextj>n-1 || nextj<0 ||
a[nexti][nextj] != -1) {
if(inci==1 && incj==0) {
inci= 0, incj=-1;
}
else if(inci==0 && incj==-1) {
inci= -1, incj=0;
}else if(inci==-1 && incj==0) {
inci = 0, incj=1;
}else {
inci = 1, incj=0;
}
nexti = i+inci;
nextj = j+incj;
}
i = nexti;
j = nextj;
}

for (i=0; i<n; i++) {
for(j=0; j<n; j++) printf("%3d ", a[i][j]);
printf("\n");
}
}

-------
5
13 14 15 16 1
12 23 24 17 2
11 22 25 18 3
10 21 20 19 4
9 8 7 6 5

『柒』 c語言蛇形矩陣的變型


// Snake.cpp : 定義控制台應用程序的入口點。

//


#include "stdafx.h"

#include <iostream>

using namespace std;


int _tmain(int argc, _TCHAR* argv[])

{

int** array = NULL;

int row;

cin>>row;

int col = row;

array = new int*[row];


for (int i = 0; i < row; i++)

{

[i] = new int[row - i];

}

for (int i = 0; i < row; i++)

{

int add = i;

for ( int j = 0; j < col - i; j++)

{

if (j == 0 && i == 0)

{

array[0][0] = 1;

}

else

{

if ( j > 0)

{

array[i][j] = array[i][j - 1] + add;

}

else

{

if (i > 0)

{

array[i][j] = array[i - 1][1] + 1;

}

}

}

add++;

}



}

for (int i = 0; i < row; i++)

{

for (int j = 0; j < row - i; j++)

{

if (array[i][j] < 10)

{

cout<<array[i][j]<<" "<<" ";

}

else

{

cout<<array[i][j]<<" ";

}

}

cout<<endl;

}

return 0;

}


『捌』 C語言蛇形矩陣代碼

啥叫「蛇形矩陣」?是下面這個嗎?不是請版說明一下權。

#include"stdio.h"
#defineN6
intmain(void){
chara[N][N],i,j,k;
for(k=1,i=0;i<6;i++)
if(i&1)
for(j=5;j>=0;a[i][j--]=k++);
else
for(j=0;j<6;a[i][j++]=k++);
for(i=0;i<6;i++){
for(j=0;j<6;printf("%3d",a[i][j++]));
printf(" ");
}
return0;
}

『玖』 用C語言寫出蛇形填數

//做了一個M*N,希望對你有幫助
#include "stdio.h"
void main()
{int m,n,a[100][100],count=1,fangxiang=0;
int i=0,j=0;
int shang=0,xia,zuo=0,you;//行走邊界
printf("please input 行m and 列n\n");
while(1)
{
scanf("%d%d",&m,&n);
if(m>0&&m<=100&&n>0&&n<=100)
break;
else
printf("wrong,input again!");
}
xia=m-1;
you=n-1;
while(count<=m*n)
{ a[i][j]=count;
count++;
switch(fangxiang)
{case 0:if(j<you)//上邊界
j++;
else
{i++;shang++;fangxiang=1;}
break;
case 1:if(i<xia)//右邊界
i++;
else
{j--;you--;fangxiang=2;}
break;
case 2:if(j>zuo)//下邊界
j--;
else
{i--;xia--;fangxiang=3;}
break;
case 3:if(i>shang)//左邊界
i--;
else
{j++;zuo++;fangxiang=0;}
break;
}

}
for(i=0;i<m;i++)
{for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}

『拾』 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(" ");
}

}