精华内容
下载资源
问答
  • /输入N,输出一个NN的蛇形矩阵 例如输入4,输出: 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 */ #include <stdio.h> int main(void) { //用户输入的值,创建n*n的矩阵 int n; //蛇形从1开始计数 ...

    /输入N,输出一个NN的蛇形矩阵
    例如输入4,输出:
    1 2 3 4
    12 13 14 5
    11 16 15 6
    10 9 8 7
    */

    #include <stdio.h>  
      
    int main(void)  
    {  
        //用户输入的值,创建n*n的矩阵  
        int n;  
        //蛇形从1开始计数  
        int count = 1;  
        //a[x][y],x是二维数组的第一个下标,y是第二个。  
        //round是蛇形矩阵的第几圈,从0开始。  
        int x,y,round;  
      
        scanf("%d",&n);   
        int a[n][n] ;  
          
        //如果n是1,则直接输出。  
        if(n == 1){  
            a[0][0] = count;  
        }else{  
        //下面以n=5为例  
        //一共有2(5/2)圈蛇形  
        for(round=0; round<n/2; round++){  
            /* 以下循环执行后输出如下: 
                1 2 3 4 5 
            */  
          
            x = round;  
            for(y=round;y<n-round;y++){  
                a[x][y]=count;  
                count++;  
            }  
            /* 以下循环执行后输出如下: 
                1 2 3 4 5 
                        6 
                        7 
                        8 
            */  
            y = n - round - 1;  
            for(x=round+1;x<n-round-1;x++){  
                a[x][y]=count;  
                count++;  
            }  
              
            /* 以下循环执行后输出如下: 
                1  2  3  4  5 
                            6 
                            7 
                            8 
                13 12 11 10 9    
            */  
            x = n - round - 1;  
            for(y=n-round-1;y>=round;y--){  
                a[x][y]=count;  
                count++;  
            }  
              
            /* 以下循环执行后输出如下: 
                1  2  3  4  5 
                16          6 
                15          7 
                14          8 
                13 12 11 10 9 
            */  
            y = round;  
            for(x=n-round-1-1;x>round;x--){  
                a[x][y]=count;  
                count++;  
            }  
        }  
        /* 上面的大循环执行后输出如下: 
                1  2  3  4  5 
                16 17 18 19 6 
                15 24    20 7 
                14 23 22 21 8 
                13 12 11 10 9 
            */  
        if(n%2 == 1){  
            //如果n值奇数,将最中间的空填上  
            a[n/2][n/2] = count;  
        }  
        }  
        //打印矩阵  
        for(x=0;x<n;x++){  
            for(y=0;y<n;y++){  
                printf("%d  ",a[x][y]);  
            }  
            printf("\n");  
        }  
        printf("\n");  
        
        return 0;  
    } 
    
    展开全文
  • c语言蛇形矩阵实现

    2010-10-01 00:59:54
    蛇形矩阵的实现的经典案例for(i=1;i;i++)/*对副对角线上三角端点赋值*/ { k=k+i; if(i%2==1) { a[0][i]=k; a[i][0]=k+i; } else { a[i][0]=k; a[0][i]=k+i; } }
  • c语言中的蛇形矩阵代码分享

    千次阅读 2016-08-20 17:29:21
    谁能将下面的代码改成结果为1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16 的蛇形矩阵? 下面这个是C语言代码: #include #define N 100 void main() { int n,i,j,k; int a[N][N]; n = 4; for(i=0;i;i++) { ...
    谁能将下面的代码改成结果为1 3 4 10 2 5 9 11 6 8 12 15 7 13 14 16 的蛇形矩阵?
    
    下面这个是C语言的代码:
    #include <stdio.h>
    #define N 100
    void main()
    {
     int n,i,j,k;
     int a[N][N];
     n = 4;
     for(i=0;i<n;i++)
     {
      for(j=0;j<n-i;j++)
      {
       k=i+j+1;
       if(k%2==1) a[i][j]=k*(k-1)/2+i+1;
       else a[i][j]=k*(k-1)/2+j+1;
      }
     }
     for(i=1;i<n;i++)
     {
      for(j=n-i;j<n;j++)
      {
       k=i+j+1;
       if(k%2==1) a[i][j]=n*n-(2*n-k+1)*(2*n-k)/2+n-j;
       else a[i][j]=n*n-(2*n-k+1)*(2*n-k)/2+n-i;
      }
     }
     for(i=0;i<n;i++)
     {
      for(j=0;j<n;j++)
      {
       printf("%d\t",a[i][j]);
      }
      printf("\n");
     }
    }


    展开全文
  • C语言实现蛇形矩阵

    万次阅读 多人点赞 2017-12-19 21:37:14
    c语言实现蛇形矩阵

    题目如下图所示:


    解题思路分析:

    我们按照图中标出的箭头指向,逐一的赋值整个矩阵。


    具体思路:

    1. 初始的时候,行标i=0,列标j=0,data[i][j]=0,此时k = 1(k表示当前矩阵位置到下一位置的运动方向);
    2. 当data移动到下一个位置后,此时需要把k变为它当前位置的移动方向。
        1) k = 1的时候,k的下一个运动方向可能是 2或者4;
           A. data位于矩阵的第一行时,k变为2;
           B. data位于矩阵的最下面一行时,k变为4.
         2) k = 2的时候,k的下一个运动方向可能是 1或者2或者3;
           A. data位于矩阵的第一列时,k变为3;
           B. data位于矩阵的最下面一行时,k变为1;
           C. data位于矩阵其它位置时,k仍为2.
    3) k = 3的时候,k的下一个运动方向可能是 2或者4;
            A. data位于矩阵的第一列时,k变为4;
            B. data位于矩阵的最后一列时,k变为2.
    4) k = 4的时候,k的下一个运动方向可能是1或者3或者4;
            A. data位于矩阵的第一行时,k变为1;
            B. data位于矩阵的最后一列时,k变为3;
    C. data位于矩阵其它位置时,k仍为4.
    此外,有左下顶角和右上顶角的位置需要额外关注。

    主体代码如下:

    int n;
    	int i = 0;  //行  
    	int j = 0;  //列  
    	int k = 1;  //运动方向. k =1 表示运动方向为从左往右移动;k=2 表示从右上角往左下角移动; k=3 表示向下移动 ;k=4 表示从左下角网右上角移动  
    	int data [100][100];  
    	data[0][0] = 1;  
    	printf("Input n:\n");
    	scanf("%d",&n);
    	while( i!=n-1 || j !=n-1){  
    		if(k == 1){  
    			data[i][j+1] = data[i][j] + 1;  
    			j = j + 1;  
    			if(i == n-1){  
    				k = 4;  
    			}else{  
    				k = 2;  
    			}  
    		}else if(k == 2){  
    			data[i+1][j-1] = data[i][j] + 1;  
    			j = j - 1;  
    			i = i +1;  
    			if( j == 0 && i != n-1){  
    				k = 3;  
    			}else if( i == n-1){  
    				k = 1;  
    			}else{  
    				k = 2;  
    			}  
    		}else if(k == 3){  
    			data[i+1][j] = data[i][j] + 1;  
    			i = i+1;  
    			if( j ==  n-1){  
    				k = 2;  
    			}else {  
    				k = 4;  
    			}  
    		}else if(k == 4){  
    			data[i-1][j+1] = data[i][j] + 1;  
    			j = j + 1;  
    			i = i - 1;  
    
    			if(i == 0 && j != n-1){  
    				k = 1;  
    			}else if( j == n-1  )  
    			{  
    				k = 3;  
    			}else{  
    				k = 4;  
    			}  
    		}  
    	}   
    	//显示矩阵  
    	for(int a=0;a<n;a++){  
    		for(int b=0;b<n;b++){  
    			printf("%d\t",data[a][b]);  
    		}  
    		printf("\n");  
    	}



    展开全文
  • c语言实现蛇形矩阵和回形矩阵

    千次阅读 多人点赞 2020-02-27 12:42:34
    蛇形矩阵 #include<stdio.h> /*输出蛇形矩阵*/ int main() { int n; int num[1000][1000]; int i=0,j=0; int count = 0; scanf("%d",&n); num[i][j]=++count;//为num[0][0]赋值1 while(co...

    蛇形矩阵

    在这里插入图片描述

    #include<stdio.h>
    /*输出蛇形矩阵*/
    int main()
    {
        int n;
        int num[100][100];
        int i=0,j=0;
        int count = 0;
        scanf("%d",&n);
        num[i][j]=++count;//为num[0][0]赋值1
        while(count<n*n)
        {
            if(j<n-1)//if-else语句判断是横着走一个还是竖着走一个,并赋值
                j++;
            else
                i++;
            num[i][j]=++count;
            while(i<n-1&&j>0)//斜向下走,直到走到头
            {
                i++;j--;
                num[i][j]=++count;
            }
            if(i<n-1)//if-else语句判断是横着走还是竖着走,并赋值
                i++;
            else
                j++;
            num[i][j]=++count;
            while(i>0&&j<n-1)//斜向上走,走到头
            {
                i--;j++;
                num[i][j]=++count;
            }
             
        }
        for(i=0;i<n;i++)//输出
        {
            for(j=0;j<n;j++)
                printf("%d ",num[i][j]);
            putchar('\n');
        }
    return 0;
    }
    

    回形矩阵

    #include<stdio.h>
    /*输出回形矩阵*/
    int main()
    {
        int n,count=0,i;
        scanf("%d",&n);
        int num[100][100];
        int start=0,finish=n-1;
        while(count<n*n)
        {
            
            for(i=start;i<=finish;i++)//从左向右
                num[start][i]=++count;
            for(i=start+1;i<=finish;i++)//从上到下
                num[i][finish]=++count;
            for(i=finish-1;i>=start;i--)//从右往左
                num[finish][i]=++count;
            for(i=finish-1;i>=start+1;i--)//从下向上
                num[i][start]=++count;
            start++;finish--;//缩圈
        }
        for(i=0;i<n;i++)//输出
        {
            for(int j=0;j<n;j++)
                printf("%d ",num[i][j]);
            putchar('\n');
        }
        return 0;
    }
    

    开始的时候遇到了问题:Process returned -1073741571 (0xC00000FD)
    在这里插入图片描述
    发现原因是num[1000][1000]定义的太大了内存溢出,改小一点就好啦

    展开全文
  • MAX),输出1到n蛇形矩阵。 【例如】 n=10 1 2 6 7 3 5 8 4 9 10 思路 昨天晚上无意看到这题,打算尝试一下。这种题无非就是找规律,和数学题差不多。当时没有工具,勉强在手机上的表格上写了蛇形数组,观察了下思路...
  • 从键盘任意输入一个自然数n(n表示矩阵的大小,假设不超过100),请编程输出一个nn的蛇形矩阵。如果输入的n不是自然数或者输入了不合法的数字,则输出"Input error!"。 提示 用两个双重循环分别计算nn矩阵...
  • C语言编写的蛇形矩阵代码,很好玩的哟
  • c语言蛇形矩阵

    千次阅读 2017-06-05 21:01:34
    代码1如下 #include #define N 100 void ZigzagMatrix(int a[][N], int n); int main() {  int a[N][N],i,j,n;  printf("Input n:\n");  scanf("%d",&n);  if(n>=...
  • 逆时针蛇形矩阵问题

    2019-01-05 12:48:47
    这是一个c语言的作业,能够输出逆时针蛇形矩阵,很好用!!
  • 匿名用户1级2009-06-14 回答#include"stdio.h"#include"stdlib.h"const long MAXSIZE = 100;void main(){long pData[MAXSIZE][MAXSIZE];printf("Please input size:\n");long nSize;scanf("%d", &...
  • C语言-蛇形矩阵(2)

    千次阅读 2017-07-14 15:46:41
    10 11 12 1  9 16 13 2  8 15 14 3  7 6 5 4 型蛇形矩阵 #include #define SIZE 100 void newMatrix(int matrix[SIZE][SIZE],int n); int main() { int matrix[SIZE][SIZE]={0}; ne
  • 蛇形矩阵c语言实现

    千次阅读 2019-06-15 19:10:28
    【问题描述】蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。如: 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 本题要求根据输入的行数要求,输出对应的一个蛇形上三角矩阵 【输入形式】一个整数 【输出形式】与...
  • C语言蛇形矩阵例题

    2017-02-04 21:17:10
    某同学玩一个数字游戏,取个n行n列数字矩阵,数字的填补方法为:从1开始以顺时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵代码: # include< stdio.h> void main() { int n,i,...
  • C语言/C++ 蛇形矩阵 利用偏移量来解决蛇形矩阵问题【简单易懂,代码可以直接运行】 输入两个整数 n 和 m,输出一个 n 行 m 列的矩阵,将数字 1 到 n×m 按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。 输入...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼#include #include#include#includeusing namespace std;void rowfill(int& startnum, int& startrow,int& startcol, int length,int step,int direct,...
  • c语言蛇形矩阵

    2021-12-15 17:09:52
    c语言蛇形矩阵
  • 输出蛇形矩阵 C语言

    2020-12-14 11:40:57
    输出蛇形矩阵 样例 输入 5 输出 15 7 6 2 1 16 14 8 5 3 22 17 13 9 4 23 21 18 12 10 25 24 20 19 11 解答 #include <stdio.h> int main() { int a[20][20] = {0}; int i, j, n, count = 1; scanf("%...
  • 图是要求的输出范例程序要求输入一个大于等于5的奇数n然后输出一个和示例图类似的特殊蛇形矩阵 中心是0然后向外展开要求是不能用数组和stdio.h以外的lib已经想了整整一下午了 完全没有任何思路.求大神帮帮忙想一下...
  • } 运行结果: 蛇形矩阵: 输入样例:5 输出: 通过图片分析,我们可以知道,每一行都是向着斜向上的方向移动,所以这时候我们可以通过循环即可实现向斜向上的方向移动,只需要改变对应的下标即可。 对应的代码: #include...
  • 主要适用于C语言初学者,在很多学校的考研初试复试试卷中也会出现蛇形矩阵,这份代码会对不熟悉此类问题的读者有一定启发
  • 又仔细看了一遍你的代码DEBUG了一下发现你是先输出左上半的元素然后计算右半部的直接顺序输出数组乍一看是没问题的但是你忽略的是输出的前提是必须先计算好值你遍历输出到第2行第一个右半部分的元素的时候这个元素还...
  • 下面是参考代码: 输出结果如下: 打印蛇形矩阵 顾名思义,蛇形矩阵:矩阵的一种,常被应用在编程题目与数学数列中。 它由1开始的自然数依次排列成的一个矩阵,有上三角、环形或对角线等走法,输入文件由一行或多行...
  • C语言n阶蛇形矩阵输出

    千次阅读 2020-06-20 13:04:34
    n阶蛇形矩阵 n为奇数时,如: 15762116148532217139423211812102524201911\begin{matrix}15 & 7 & 6 & 2 & 1 \\16 & 14 & 8 & 5 & 3 \\ 22 & 17 & 13 & 9 & 4 \\ ...
  • 输出蛇形矩阵,数学规律(C语言

    千次阅读 2018-11-05 23:03:30
    蛇形矩阵,中心对称法 蛇形矩阵中容易发现,中心对称的元素的和是相同的,蛇形矩阵在打印出上三角之后,先通过矩阵的大小n,知道最后一个元素为n*n,可以利用中心对称,每组对称的元素之和都是第一个和最后一个元素...
  • 题目(蛇形矩阵之崴脚的小北) Description 曾经有一个蛇的种族,他们喜欢在一个方框里绕来绕去。大家都相处的很和睦。 知道有一天,有一天叫小北的蛇把脚崴了(不要问我为啥蛇能把脚歪了),于是他的走法发生了亿点点...
  • 蛇形矩阵c++实现

    千次阅读 2018-05-21 21:46:36
    1. 实验题目蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。 【输入】 本题有多组数据,每组数据由一个正整数N组成。(N不大于100) 【输出】 对于每一组数据,输出一个N行的蛇形矩阵。两组输出之间...
  • 小明玩一个数字游戏,取个n行n列数字矩阵(其中n为不超过100的奇数),数字的填补方法为:在矩阵中心从1开始以逆时针方向绕行,逐圈扩大,直到n行n列填满数字,请输出该n行n列正方形矩阵以及其的对角线数字之和. ...

空空如也

空空如也

1 2 3 4 5 ... 18
收藏数 341
精华内容 136
关键字:

c语言蛇形矩阵代码

c语言 订阅