C语言——每日一练: N*N的矩阵填数

编程入门 行业动态 更新时间:2024-10-09 20:22:52

C语言——每日一练: N*N的<a href=https://www.elefans.com/category/jswz/34/1769510.html style=矩阵填数"/>

C语言——每日一练: N*N的矩阵填数

①倒填,例如N=5                           ②蛇形填数                                  ③回转填数

 倒填,例如N=5   (倒填比较简单)

#include <stdio.h>
#include <stdlib.h>
#define n 5
int main()
{int a[n][n];int i,j,b=n*n;for(i=0;i<n;i++){for(j=0;j<n;j++){a[i][j]=b;b--;}}for(i=0;i<n;i++){for(j=0;j<n;j++){printf("%2d ",a[i][j]);}printf("\n");}return 0;
}

运行结果

矩阵的行列为n,n=5时,输出样例:

 

②蛇形填数(三种填法最复杂的一种)

#include <stdio.h>
#include <stdlib.h>
#define n 8
int main()
{int a[n][n];int i,j,sum=1,k;for(i=0;i<n;i++){for(j=0;j<n;j++)a[i][j]=0;}for(k=0;;k+=2)
{//向下for(i=k;i<=k+1;i++){j=0;if(a[i][j]==0&&i<n&&j<n){a[i][j]=sum;sum++;}}//向右上for(j=0;;j++){i--;if(i<0)break;if(a[i][j]==0&&i<n&&j<n){a[i][j]=sum;sum++;}}//向右for(j=k+1;j<=k+2;j++){if(j>n-1)break;i=0;if(a[i][j]==0&&i<n&&j<n){a[i][j]=sum;sum++;}}//向左下i=0;for(j=k+2;j>=0;j--){if(i>n-1)break;if(a[i][j]==0&&i<n&&j<n){a[i][j]=sum;sum++;}i++;}if(sum==n*n+1)break;
}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%2d ",a[i][j]);printf("\n");}return 0;
}

运行结果:n=8时

 

③回转填数

#include <stdio.h>
#include <stdlib.h>
#define n 7
int main()
{int a[n][n];int i,j,sum=1,k;for(i=0;i<n;i++){for(j=0;j<n;j++)a[i][j]=0;}for(k=0;;k++){//向下for(i=0;i<n;i++){if(a[i][k]==0){a[i][k]=sum;sum++;}}//向右for(j=0;j<n;j++){if(a[n-k-1][j]==0){a[n-k-1][j]=sum;sum++;}}//向上for(i=n-1;i>=0;i--){if(a[i][n-1-k]==0){a[i][n-1-k]=sum;sum++;}}//向左for(j=n-1;j>=0;j--){if(a[k][j]==0){a[k][j]=sum;sum++;}}if(sum==n*n+1)break;}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%2d ",a[i][j]);printf("\n");}return 0;
}

运行结果

//矩阵的行列为n,n=7时,  输出样例:

 

更多推荐

C语言——每日一练: N*N的矩阵填数

本文发布于:2024-03-12 06:58:25,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1730947.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:矩阵   语言

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!