#include
<
stdio.h
>
void
Init (
int
square[][
20
],
int
n) {
int
i,j;
for
(i
=
1
;i
<=
n;i
++
){
for
(j
=
1
;j
<=
n;j
++
)square[i
-
1
][j
-
1
]
=
0
;}}
void
put (
int
square[][
20
],
int
n){
int
p,q,l,k,i;p
=
n
/
2
;q
=
n
-
1
;
for
(i
=
1
;i
<=
n
*
n;i
++
){square[p][q]
=
i;l
=
q;k
=
p;p
++
;q
++
;
if
(p
==
n)p
=
p
%
n;
if
(q
==
n)q
=
q
%
n;
if
(square[p][q]
!=
0
){q
=
l
-
1
;p
=
k;}
if
(q
==-
1
)q
=
n
-
1
;}}
void
show (
int
square[][
20
],
int
n) {
int
i,j;
for
(i
=
1
;i
<=
n;i
++
) {
for
(j
=
1
;j
<=
n;j
++
)printf(
"
M
"
,square[i
-
1
][j
-
1
]);printf(
"
"
);}}
int
calculate (
int
square[][
20
],
int
n) {
int
s,i;s
=
0
;
for
(i
=
1
;i
<=
n;i
++
)s
=
s
+
square[
0
][i
-
1
];
return
s;}main () {
int
square[
20
][
20
];
int
n,sum;
do
{printf(
"
请输入奇数 n:
"
);scanf(
"
%d
"
,
&
n);}
while
((n
%
2
==
0
)
||
(n
<
3
)
||
(n
>
19
)); Init(square,n);put(square,n);show(square,n);sum
=
calculate(square,n);printf(
"
共有%d个数.
"
,sum);getch();}
/*
编写程序实现n阶(n为奇数)魔方。n为外部输入参数,输出结果按方阵排列。
*/
转载请注明原文地址: https://ibbs.8miu.com/read-32159.html