魔方阵(奇)
2016-07-26 17:10
204 查看
//思想:将1存入第一行中间,以后的元素初始化,是讲上一个元素的横坐标+1,纵坐标-1。如果超出数组的方位,则分别放到第一列和第一行。
#include<stdio.h>
int main(int argc, const char * argv[]) {
int n;
printf("请输入魔方阵的大小:\n");
scanf("%d",&n); //输入奇数,
while (n%2==0) { //判断输入是否正确
printf("输入有误,请重新输入奇数:\n");
scanf("%d",&n);
}
int a
; //初始化数组
int num,i,j; //num:用于计数;i:用于存储行;j:用于存储列
for (i=0; i<n; i++) { //初始化数组元素都为0
for (j=0; j<n; j++) {
a[i][j]=0;
}
}
num=0;
j=n/2;
i=0;
a[i][j]=1; //首先设置1的位置。
for (int t=2; num!=n*n-1;t++ ) {//利用for循环对数组元素依次赋值
int i1=i,j1=j; //保存上次初始化的元素的坐标
if (j+1<n) {
j+=1;
}else{
j-=(n-1); //当列加1向右超出数组,则使它转到第一列
}
if (i-1>=0) {
i-=1;
}else{
i+=(n-1); //当行减1向上超出数组,则使它转到第一行
}
if (a[i][j]==0) { //判断将要初始化的元素是否为0.
a[i][j]=t; //如果为0,则对其初始化;
}else{ //如果不为0,则不需要初始化;对上一个元素的下方的元素初始化。
i=i1+1;
j=j1;
a[i][j]=t;
}
num++; //计数
}
for (i=0; i<n; i++) { //输出数组
for (j=0; j<n; j++) {
printf("%4d\t",a[i][j]);
}
printf("\n");
}
return 0;
}
#include<stdio.h>
int main(int argc, const char * argv[]) {
int n;
printf("请输入魔方阵的大小:\n");
scanf("%d",&n); //输入奇数,
while (n%2==0) { //判断输入是否正确
printf("输入有误,请重新输入奇数:\n");
scanf("%d",&n);
}
int a
; //初始化数组
int num,i,j; //num:用于计数;i:用于存储行;j:用于存储列
for (i=0; i<n; i++) { //初始化数组元素都为0
for (j=0; j<n; j++) {
a[i][j]=0;
}
}
num=0;
j=n/2;
i=0;
a[i][j]=1; //首先设置1的位置。
for (int t=2; num!=n*n-1;t++ ) {//利用for循环对数组元素依次赋值
int i1=i,j1=j; //保存上次初始化的元素的坐标
if (j+1<n) {
j+=1;
}else{
j-=(n-1); //当列加1向右超出数组,则使它转到第一列
}
if (i-1>=0) {
i-=1;
}else{
i+=(n-1); //当行减1向上超出数组,则使它转到第一行
}
if (a[i][j]==0) { //判断将要初始化的元素是否为0.
a[i][j]=t; //如果为0,则对其初始化;
}else{ //如果不为0,则不需要初始化;对上一个元素的下方的元素初始化。
i=i1+1;
j=j1;
a[i][j]=t;
}
num++; //计数
}
for (i=0; i<n; i++) { //输出数组
for (j=0; j<n; j++) {
printf("%4d\t",a[i][j]);
}
printf("\n");
}
return 0;
}
相关文章推荐
- jquery全选和反全选在第三次点击后无效的问题
- windows下theano开发环境搭建(实现了GPU加速)
- LINUX多线程读写同一个文件 加锁
- 笔记本电脑发出嗡嗡声
- android studio tabhost基础 多功能时钟app 闹钟执行后清除 alarmmanager(六)
- Swift 版本相册,防微信相册
- 混淆实战
- 什么是2MSL
- "_OBJC_CLASS_$_CMMotionManager", referenced from:
- Linux 修改主机名
- svn move (mv,rename,ren)
- String类
- hdu 5752 Sqrt Bo(2016 Multi-University Training Contest 3——水题)
- LeetCode之flatten binary tree
- 对 AFNetworking 二次封装应用 - POST
- 对于Toast的使用
- hdu 5752 Sqrt Bo (水题)
- 读取指定文件夹里面的所有图片取出里面其中一张图片和判断文件夹或文件是否存在
- 流行的前端框架一览
- fpm 制作rpm包