C语言代码输出一个“魔方阵”
程序员文章站
2023-11-21 19:44:52
c语言代码输出一个“魔方阵”
算法实现:
本程序要输出魔方阵,魔方阵如下:
1) 8 1 6 2) 17 24 1...
c语言代码输出一个“魔方阵”
算法实现:
本程序要输出魔方阵,魔方阵如下:
1) 8 1 6 2) 17 24 1 8 15 3 5 7 23 5 7 14 16 4 9 2 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9
了解题可知:
1.第一行中间一列的值为1。
所以用j=n/2+1确定1的列数,得出a[1][j]=1。
2.每一个数存放的行比前一个数的行数减1,列数加1。
行数用i=i-1确定,列数用j=j+1确定。
3.如果一个数行数为第一行,则下一个数行数为最后一行。
4.如果一个列行数为最后一列,则下一个数列数为第一列。
5.如果按上面的规则确定的位置上已有数,或上一个数是第一行最后一列,则把下一个数放在上一个数的下面。
程序:
#include <stdio.h> #define n 16 int main() { int a[n][n]={0},i,j,k,p,n; p=1; while(p==1) { printf("enter n(1~%d): ",n); scanf("%d",&n); if((n!=0)&&(n<n)&&(n%2!=0)) p=0; } i=n+1; j=n/2+1; a[1][j]=1; for(k=2;k<=n*n;k++) { i=i-1; j=j+1; if((i<1)&&(j>n)) { i=i+2; j=j-1; } else { if(i<1) i=n; if(j>n) j=1; } if(a[i][j]==0) a[i][j]=k; else { i=i+2; j=j-1; a[i][j]=k; } } for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; }
总结:
作为初学的第一个程序,总感觉有些低级,没什么技术性,不过还是学到了新的知识。相信经过之后的学习,我会懂得更多,会敲出有技术含量的代码。
推荐阅读
-
C语言代码输出一个“魔方阵”
-
c语言:3种方法实现输出一个整数的每一位。
-
C语言经典编程实例之输出一个正方形
-
C语言:实现一个函数,打印乘法口诀表,如:输入9,输出9*9口诀表
-
c语言:输出以下关键字的字节大小及输出一个地址:char,short,int,float,double,long
-
c语言:给定一个大写字母,用小写字母输出
-
c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
-
C语言 编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。
-
C语言——用“*”输出一个菱形
-
【C语言】输入一个整数,输出该数二进制表示中1的个数(三种方法)