如何將輸入一個數改為輸入多個奇數以0為結束符然后輸出奇數幻方
#include<iostream>
using namespace std;
int main()
{
int k;
cout << "你希望得到的幻方階數是(<=99):" << endl;
cin >> k;
int num[99][99] = { 0 };
int m = 0;
int n = (k-1)/2;
num[0][(k-1)/2] = 1;
for (int i = 2; i <= k*k; i++)
{
m--;
n++;
if (m == -1 && n != k)//判上
{
m = m + k;
num[m][n] = i;
}
else if (n == k && m != -1)//判右
{
n = n - k;
num[m][n] = i;
}
else if (m == -1 && n == k)//判右上頂角
{
m = m + 2;
n = n - 1;
num[m][n] = i;
}
else if (num[m][n] != 0)//判右上有數
{
m = m + 2;
n = n - 1;
num[m][n] = i;
}
else//通性右上
{
num[m][n] = i;
}
}
for (m = 0; m <k; m++)//輸出
{
for (n = 0; n <k; n++)
{
cout << num[m][n] << "\t";
}
cout << endl;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/244927.html
標籤:C++ 語言
下一篇:兩數之和(C語言)
