C語言實(shí)現(xiàn)奇數(shù)階魔方陣的方法
本文實(shí)例講述了C語言實(shí)現(xiàn)奇數(shù)階魔方陣的方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:
#include "string.h"
#include "stdlib.h"
#define N 5
void main(){
int a[N][N]={0};
int i,j;
int k;
i = 0;
j = N/2;
a[0][j]=1;
for(k = 2; k <= N*N; k++){
if( i == 0 && j == N-1 ){//先判斷前一個(gè)數(shù)是不是最右上角的數(shù),若是后一個(gè)數(shù)直接填在前一個(gè)數(shù)下方
i=i+1;
a[i][j] = k;
continue;
}
i = (i-1+N)%N;//計(jì)算前一個(gè)數(shù)右上角的坐標(biāo)
j = (j+1)%N;
if(a[i][j] != 0){//若前一個(gè)數(shù)的右上角有元素,后一個(gè)數(shù)直接填在前一個(gè)數(shù)下方
i = ((i+1)%N+1)%N;//恢復(fù)坐標(biāo)
j = (j-1+N)%N;
a[i][j] = k;
}else{//上述條件均不滿足,后一個(gè)數(shù)放在前一個(gè)數(shù)的右上角
a[i][j] = k;
}
}
for(i = 0; i < N; i++){
for(j = 0; j < N; j++){
printf("M",a[i][j]);
}
printf("\n");
}
}
測試數(shù)據(jù)如下:
N = 3
8 1 6
3 5 7
4 9 2
希望本文所述對大家的C語言程序設(shè)計(jì)有所幫助。
相關(guān)文章
C++11并發(fā)編程關(guān)于原子操作atomic的代碼示例
今天小編就為大家分享一篇關(guān)于C++11并發(fā)編程關(guān)于原子操作atomic的代碼示例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-12-12C++的靜態(tài)成員變量和靜態(tài)成員函數(shù)詳解
這篇文章主要為大家介紹了C++的靜態(tài)成員變量和靜態(tài)成員函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2021-12-12C++類與對象深入之運(yùn)算符重載與const及初始化列表詳解
運(yùn)算符是程序中最最常見的操作,例如對于內(nèi)置類型的賦值我們直接使用=賦值即可,因?yàn)檫@些編譯器已經(jīng)幫我們做好了,但是對象的賦值呢?能直接賦值嗎2022-06-06解析C++的線性表鏈?zhǔn)酱鎯?chǔ)設(shè)計(jì)與相關(guān)的API實(shí)現(xiàn)
這篇文章主要介紹了解析C++中的線性表鏈?zhǔn)酱鎯?chǔ)設(shè)計(jì)與相關(guān)的API實(shí)現(xiàn),文中的實(shí)例很好地體現(xiàn)了如何創(chuàng)建和遍歷鏈表等基本操作,需要的朋友可以參考下2016-03-03